본문 바로가기

파이썬33

백준(파이썬, python) - 2869번 달팽이는 올라가고 싶다(2022.11.05) 1. 2869번 1) 문제 2) 풀이 import sys A, B, V = map(int,sys.stdin.readline().split()) if (V-A)%(A-B) == 0: print((V-A)//(A-B)+1) else: print((V-A)//(A-B)+2) 3) 문법 및 풀이과정 맨 처음에 이 문제를 보고 while문을 활용해서 코드를 짰다. 비교적 작은 수에 있어서는 답이 틀리게 나오진 않았으나, 예제 입력 3을 테스트하자마자 결과값이 바로 안나오고 시간이 걸렸다. 무조건 시간초과가 나올 거라는 생각에 다시 코드를 살펴보니 주어진 입력값이 클수록 시간 복잡도가 커지고 주어진 문제의 시간 조건이 그렇게 많지도 않기 때문에 더 간단한 코드를 찾아야 했다. A -B A -B A -B 가 나열되는.. 2022. 11. 6.
백준(파이썬, python) - 2292번 벌집(2022.11.03) 1. 2292번 1) 문제 2) 풀이 n= int(input ()) room = 1 i = 1 while n > room: room += 6 * i i += 1 print(i) 3) 문법 및 풀이과정 - 문제 이해 일종의 군 수열이라고 볼 수 있다. 1군 : 1 2군 : 2 ~ 7 3군 : 8 ~ 19 4군 : 20 ~ 37 ... 위 군 수열의 규칙을 찾아보면 군이 하나씩 증가할 때마다 1군은 1개의 항을 가지고 n군(n>1)은 6(n-1)개의 항을 가짐을 알 수 있다. 따라서 이 항의 개수를 통해 주어진 입력값이 몇 번째 군인지를 알 수 있고 이 때, 몇 번째 군인지가 곧 주어진 방까지 가는 방의 최소 개수라고 볼 수 있다. - 문제 풀이 (1) 입력값을 받는다. (2) room =1 / i = 1 .. 2022. 11. 5.
백준(파이썬, python) - 1712번 손익분기점(2022.11.02) 1. 1712번 1) 문제 2) 풀이 import sys a, b, c = map(int, sys.stdin.readline().split()) if b>=c: print(-1) else: print(int(a/(c-b))+1) 3) 문법 및 풀이과정 (1) 세 수를 입력받는다. (2) 이 때, b가 c보다 크거나 같은 경우는 손익분기점을 넘길 수 없으므로 -1을 print한다. 반드시 등호가 들어가야한다. ( 등호일 경우 zero division 오류가 발생하기 때문이다. (3) b가 c보다 작을 경우엔 a/(c-b)에 int를 씌워 소수점을 없애게 한 후 +1을 하여 손익분기점을 구한다. 2022. 11. 3.
백준(파이썬, python) - 2566번 최댓값 (2022.11.02) 1. 2566번 1) 문제 2) 풀이 import sys max_numbers = [] max_column = [] for i in range(9): low = list(map(int,sys.stdin.readline().split())) max_numbers.append(max(low)) max_column.append(low.index(max(low))) M = max(max_numbers) a = max_numbers.index(M) b = max_column[a] print(M) print(a+1,b+1) 3) 문법 및 풀이과정 (1) max_numbers (각 행의 최댓값들을 모아둘 리스트)와 max_column(각 행의 최댓값의 index를 저장할 list , 즉 각 행의 최댓값이 몇 열에 위.. 2022. 11. 3.
백준(파이썬, python) - 10807번 개수 세기(2022.11.01) 1. 10807번 1) 문제 2) 풀이 import sys n = int(sys.stdin.readline()) numbers = list(map(int,sys.stdin.readline().split())) x = int(sys.stdin.readline()) print(numbers.count(x)) 3) 문법 및 풀이과정 처음엔 for문을 입력받은 n값만큼 돌려야하나 했지만 굳이 for문이 없어도 입력받은 숫자들과 세번째 입력값인 x만으로도 충분히 풀 수 있을 것 같아 위와 같이 풀이해봤다. 2022. 11. 1.
백준(파이썬, python) - 5597번 과제 안 내신 분..? (2022.11.01) 1. 5597번 1) 문제 2) 풀이 import sys numbers = list(range(1,31)) for i in range(28): num = int(sys.stdin.readline().strip()) numbers.remove(num) print(numbers[0],numbers[1], sep = "\n") 3) 문법 및 풀이과정 1부터 30까지 미리 list에 넣어놓고 입력 받은 숫자마다 리스트에서 삭제되도록 했다. 이때 입력값을 28번이나 받아야하기에 시간초과가 될 것을 우려해서 sys를 통해 입력값을 받았다. 2022. 11. 1.