Programming [Python] (411) 썸네일형 리스트형 #98 백준 파이썬 [1904] 01타일 - 점화식 https://www.acmicpc.net/problem/1904 #Solution 이 문제의 경우 이진수의 길이에 상관 없이 1 혹은 00으로 끝나면 되면 된다. 즉 피보나치 수열과 같이 점화식으로 표현하면 되는 것이다. 1 2 3 5 8 ... 그러나 일반적인 피보나치 수열로 표현할 시에 수가 너무 커져서 시간 초과를 출력한다. 정답은 어차피 나머지이므로 for문에서 n-1, n-2를 더할 때 15746으로 나눈 나머지로 치환해서 더해주어도 무관하다. 나눗셈과 나머지의 특징을 잘 생각해보면 될 것. def tile001(n): answer = 0 temp_1 = 1 temp_2 = 2 for i in range(1, n+1): if i == 1: answer = temp_1 elif i == 2: a.. #97 백준 파이썬 [6064] 카잉 달력 https://www.acmicpc.net/problem/6064 #Solution 이 문제는 반례를 찾는 게 특히 어렵다. 또한 전수조사하여 시간초과가 나는 일을 없애야한다. 1) 반례가 없는가 2) 시간 초과가 나지 않는가? -> O(M*N)은 시간 초과가 난다. 아래는 두 개의 풀이법이고 첫 번째는 시간초과, 두 번째는 시간초과가 나지 않는다. #1 시간초과: 전수 조사하여 x와 y 둘을 만족하는 값을 교집합으로 찾는 식이다. T = int(input()) def gcd(x,y): mod = x % y while mod >0: x = y y = mod mod = x % y return y def lcm(x, y): return x * y // gcd(x,y) for t in range(T): M, .. #96 백준 파이썬 [1793] 타일링 https://www.acmicpc.net/problem/1793 #Solution 여기서 훼이크는 '아무것도 안하기' 도 하나의 방법이라는 것 def squares(n): answer = 0 temp_n1 = 1 temp_n2 = 3 for i in range(0, n+1): if i == 0 or i == 1: answer = 1 elif i == 2: answer = 3 else: answer = temp_n1 * 2 + temp_n2 temp_n1 = temp_n2 temp_n2 = answer return answer while True: try: print(squares(int(input()))) except: break #95 백준 파이썬 [11726] 2xn 타일링 https://www.acmicpc.net/problem/11726 #Solution def squares(n): answer = 0 temp_n1 = 1 temp_n2 = 2 for i in range(1, n+1): if i == 1: answer += 1 elif i == 2: answer += 1 else: answer = temp_n1 + temp_n2 temp_n1 = temp_n2 temp_n2 = answer return answer answer = squares(int(input())) print(answer % 10007) #94 백준 파이썬 [1021] 회전하는 큐 - 덱 https://www.acmicpc.net/problem/1021 #Solution 이 문제는 큐지만 사실 덱으로 풀어야하는 것이나 다름 없다. 라이브러리는 collections의 deque를 사용한다. index모듈을 사용해서 위치를 확인 후 queue 전체 크기보다 작은지 큰지를 결정한 후 왼쪽/오른쪽 로테이션 방향을 정한다. rotation을 얼마나 하느냐를 출력해주면 된다. import collections max_num, target_num = map(int, input().split()) target_list = list(map(int, input().split())) que = collections.deque([i for i in range(1, max_num +1)]) result = 0 .. #93 백준 파이썬 [2164] 카드2 - 덱 https://www.acmicpc.net/problem/2164 #Solution_1 직접 덱을 만들지만 시간초과 (결과값은 동일) card_num = int(input()) card_deque = [i for i in range(1, card_num +1)] while len(card_deque) != 1: card_deque.pop(0) card_deque.append(card_deque[0]) card_deque.pop(0) print(card_deque[0]) #Solution_2 구현된 collection.deque 라이브러리를 통해 시간 축소 가능 import collections card_num = int(input()) card_deque = collections.deque([i for .. #92 백준 파이썬 [4949] 균형잡힌 세상 https://www.acmicpc.net/problem/4949 #Solution 백준 [9012] 괄호 문제를 참고하면 쉽게 풀 수 있다. 조건 하나만 더 붙여준 격. while True: bracket = input() if bracket == ".": break bracket_stack = [] answer = True for j in bracket: if j == "(" or j == "[": bracket_stack.append(j) elif j == ")": if len(bracket_stack) == 0: answer = False break if bracket_stack[-1] == "(": bracket_stack.pop() else: answer = False break elif j .. #91 백준 파이썬 [10773] 제로 https://www.acmicpc.net/problem/10773 #Solution K = int(input()) num_stack = [] for _ in range(K): num = int(input()) if num == 0: del num_stack[-1] else: num_stack.append(num) if not num_stack: print(0) else: print(sum(num_stack)) 이전 1 ··· 37 38 39 40 41 42 43 ··· 52 다음