본문 바로가기

기술블로그334

Udemy : 파이썬 거북이 크로싱 프로젝트 Udemy : 파이썬 거북이 크로싱 프로젝트 거북이가 자동차들을 피해서 도로를 건너는 것 거북이는 위로만 갈 수 있다 자동차는 왼쪽으로만 움직인다 자동차는 랜덤으로 생성 거북이가 도로를 건너면, 다음 레벨로 가고, 자동차 속도는 더 빨라진다 느낀 점 그 전에는 파이썬으로 숫자나 데이터만 보면서 실습을 하거나, 강의를 들었다. 그러다 보니, 생각하는 것도 배가 되고, 시각화가 잘 안 되어서 조금 힘들었다. 하지만, turtle 모듈을 이용하면서, 내 코드가 시각화가 되면서, 좀 더 재미있게 코딩을 할 수 있었던 것 같다. 특히, 전에는 class와 function이 잘 이해가 되지 않아서, 둘을 사용하는 것을 많이 자제를 했다. 아니면 장고를 할 때에는, 크게 생각을 안 하면서 사용을 했다. 하지만, 이번.. 2023. 1. 22.
Udemy : 파이썬 퐁 게임 Udemy : 퐁 게임 main.py while문을 보면, 게임에 대한 주요 동작들을 볼 수 있다 from turtle import Turtle, Screen from paddle import Paddle from ball import Ball from scoreboard import Scoreboard import time screen = Screen() screen.bgcolor("black") screen.setup(800, 600) screen.title("Pong Game") screen.tracer(0) r_paddle = Paddle((350, 0)) l_paddle = Paddle((-350, 0)) ball = Ball() score = Scoreboard() screen.listen().. 2023. 1. 21.
[Python] 백준 2109 순회강연 🧑‍💻 [Python] 백준 2109 순회강연 Gold 3 - 힙 강연을 하는데, 각 강연마다 강연료와 몇 일 안에 강연을 하는지 입력을 받는다 최대한 강연료를 많이 받을 수 있도록 코드를 짜야 한다 문제풀이 1 힙 리스트 안에, 강연료 기준으로 최대 힙으로 넣는다 즉 튜플 형태로 힘 리스트에 넣는 것 그리고 힙을 하나씩 빼면서, 강연을 해야하는 날이, False이면 True로 바꾼다 강연을 해야 하는 날이, True일 경우, 그 전날을 본다. 이것을 False를 찾을 때 까지 뒤로 탐색을 한다 만약 1일차까지 다 True일 경우는, 그 강연은 못 하는 것이다 문제풀이 2 일단 강의 날짜 기준으로 오름차순으로 정렬을 한다 그리고 강연료를 힙 안에 넣어준다 힙의 길이는 날짜와 같거나, 적어야 한다 넣었는데.. 2023. 1. 20.
Udemy : Python 에니메이션과 좌표 Udemy : Python 에니메이션과 좌표 뱀 게임 자연스럽게 에니메이션 설정하기 screen.tracer(0) screen.update() 원래는 블록 하나씩 움직이는 것이 다 보였다 하지만 블록 전체가, 하나로 움직이는 것을 보여야 한다 screen.tracer(0)를 하면 동작 전체를 안 하도록 한다 screen.update()를 하면, 하나의 for문 또는 묶여있는 동작이 실행이 되면, 한번에 동작을 블록 전체가 하나로 실행하게 보이게 된다 뱀 움직이기 for snake_num in range(len(snake) - 1, 0, -1): new_x = snake[snake_num - 1].xcor() new_y = snake[snake_num - 1].ycor() snake[snake_num].g.. 2023. 1. 20.
Udemy - Javascript - 탐색 Udemy - Javascript - 탐색 선형 탐색 (Linear Search) 배열이 있으면, 원소 하나하나를 비교해서 탐색하는것 자바스크립트에서 선형 탐색을 하는 메서드들 indexOf includes find findIndex indexOf 를 코드로 표현 function linearSearch(array, number){ for (let i = 0; i < array.length ; i ++) { if (array[i] === number) return i; } return -1 } Big O Best case : O(1) 나오기 굉장히 어렵다 Worst case : O(n) Average : O(n) 이진 탐색 (Binary Search) 선형 탐색보다 탐색이 훨씬 빠르다 하지만 이진 탐색은 .. 2023. 1. 19.
[Python] 백준 1715 - 카드 정렬하기 🧑‍💻 [Python] 백준 1715 - 카드 정렬하기 Gold 4 - 그리디, 힙 heappop을 2번씩 해서, 나온 숫자들을 더해준다 더해준 숫자들을 다시 heap에 넣어준다 이것을 heap에 숫자가 2개 미만일 때까지 반복해서 해준다 문제풀이 힙에서 2개의 숫자를 pop으로 뽑아와서, 더해주는 것이다 제일 낮은 숫자끼리 더하면, 최소 숫자를 만들 수 있다 코드 import heapq N = int(input()) heap = [] for n in range(N): heapq.heappush(heap, int(input())) answer = 0 while True: if len(heap) 2023. 1. 18.
[Python] 프로그래머스 - 소수 구하기 🧑‍💻 [Python] 프로그래머스 - 소수 구하기 Level 2 처음에는 그냥 일반적인 식으로 소수 구하기를 풀었다 시간 초과 n까지의 숫자를 순회하면서, 각 숫자가 소수인지 아닌지를 찾음 에라토스테네스의 체를 사용하면 더 빠르게 소수를 구할 수 있다 2부터 시작을 해서, 2의 배수인 숫자들, 3의 배수인 숫자들, 5의 배수인 숫자들 등을 빼주는 것이다 문제풀이 코드 def solution(n): answer = 0 flag = True if n == 1: answer = 0 else: for num in range(2, n + 1): cnt = 0 for i in range(1, (num // 2) + 1): if num % i == 0: cnt += 1 if cnt > 1: flag = False .. 2023. 1. 18.
Udemy : Python 인스턴스, 상태, 고차함수 Udemy : Python 인스턴스, 상태, 고차함수 객체 상태 및 인스턴스 # object class # timmy Turtle() # tommy Turtle() timmy = Turtle() tommy = Turtle() 위에 timmy와 tommy는 Turtle()이라는 클래스의 블루프린트를 가지고 있는 객체이다 timmy와 tommy는 같은 블루 프린트를 가지고 있지만, 둘 다 각각 독립적인 인스턴스 이다 각각 Turtle() 이라는 객체의 예시다 즉 각각의 인스턴스는 다른 속성 그리고 다른 일을 할 수도 있다 그리고 이렇게 다른 속성, 다른 일을 할 수 있는 것을 state 즉 상태라고 한다 고차 함수 & 이벤트 리스너 import turtle as t from turtle import Turt.. 2023. 1. 18.
[Python] 백준 2696 - 중앙값 구하기 🧑‍💻 [Python] 백준 2696 - 중앙값 구하기 Gold 3 - heapq left와 right 힙 그리고 중간 값을 가지고 문제를 푸는 것이다 left는 최대 힙을 구하는 것이고, right은 최소힙을 구하는 것이다 middle은 제일 최근에 구한 중간 값이다 즉 수열의 원소가 middle보다 작으면 left로 들어가야 하고, 크면 right로 들어가야 한다 코드 import heapq import math T = int(input()) for _ in range(T): N = int(input()) nums = [] for _ in range(int(math.ceil(N / 10))): nums += list(map(int, input().split())) left, right = [], [].. 2023. 1. 17.