프로그래밍(주력)/백준 문제풀이(53)
-
2019.02.10) 백준 1003번 풀이 (PyPy3)
계산값을 저장하고 풀어야 시간이 맞는다1234567891011121314151617# 계산한거 저장zero = [1, 0, 1]one = [0, 1, 1] def fibo(p0): l = len(zero) if l
2019.02.10 -
2019.02.09) 백준 1038번 풀이 (PyPy3)
시간초과가 10번은 뜬거같다 간단하게 모든정수 돌렸더니 1022를 넣어서 내 컴퓨터에서도 출력이 안됐다.그래서 좀 줄여서 오직 작아지는 수만 순회할수 있는 알고리즘을 만들었다.근데 100%에서 시간초과가 뜨는 것이다좀 화나서 1시간동안 고민하고 보니까 1~9까지를 연산을 안돌리고 그냥 바로 출력해주면 되더라12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758c = int(input()) # 9까진 그냥 입력값이 답(이거때문에 1시간 낭비함)if c
2019.02.09 -
2019.02.08) 백준 1934번 풀이 (PyPy3)
유클리드 호제법으로 최대공약수 찾아서 최소공배수 구함 123456789101112131415161718for i in range(int(input())): _a, _b = map(int, input().split(' ')) a, b = (_a, _b) if _a > _b else (_b, _a) mi = b while a % b != 0: tmp = b b = a % b a = tmp else: mi = b print((_a // mi) * _b) Colored by Color Scriptercs
2019.02.08 -
2019.02.07) 백준 10845번 풀이 (PyPy3)
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950que = list() def empty(p0): if len(p0) == 0: return 1 return 0 def push(p0, p1): p0.append(p1) def pop(p0): if empty(p0) == 1: return -1 return p0.pop(0) def size(p0): return len(p0) def front(p0): if empty(p0) == 1: return -1 return p0[0] def back(p0): if empty(p0) == 1: return -1 return p0[-1] for i in r..
2019.02.07 -
2019.02.06) 백준 7568번 풀이 (PyPy3)
매우 간단하다 123456789101112131415input_list = list() for i in range(int(input())): input_list.append(input().split(' ')) for i in range(len(input_list)): count = 1 for j in range(len(input_list)): if i == j: continue if input_list[i][0]
2019.02.06 -
2019.02.05) 백준 2250번 풀이 (PyPy3)
알고리즘을 생각하고 시간초과를 보고만들었더니 재귀한계로 런타임에러를 보고좀 코드를 몰아서 쓰지 않고 펼쳐서 쓰니 얼떨결에 맞았다. 2일동안 고생한 보람이..1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859count = 0 c = int(input()) graph = dict()root = [0 for i in range(c + 1)] for i in range(c): graph[i + 1] = {} # 입력for i in range(c): now, left, right = list(map(int, input().split(' '))) graph[now] = (..
2019.02.05 -
2019.02.04) 백준 1065번 풀이 (PyPy3)
설연휴라 트리검색을 열심히 탐구하다 시간에 쫒겨 브루트 포스를 간단하게 풀었다.한수의 갯수인지 모르고 자꾸 헛짚다가 결국은 수정했다. 예제가 110에 99니까 모르지...123456789c = 0for i in range(int(input()), 0, -1): if i
2019.02.04 -
2019.02.03) 백준 1167번 풀이 (PyPy3)
처음엔 간단하게 dfs로 모든 점을 검사해서 높은거 뽑으면 되는줄 알았는데 그게 안된다. 시간초과랑 1시간을 씨름한 이후, 한번 dfs돌려 최고로 나온 점에서 또 dfs를 하면 가장 최적화되게 가능하다는것을 깨달았다.123456789101112131415161718192021222324252627282930313233343536373839404142434445c = int(input()) graph = dict() # 입력for i in range(c): graph[i + 1] = {} for i in range(c): input_list = list(map(int, input().split(' '))) for j in range(1, len(input_list) - 1, 2): graph[input_l..
2019.02.03 -
2019.02.02) 백준 11725번 풀이 (PyPy3)
dfs로 구현을 했는데 최적화를 못해 시간초과로 계속 빠꾸를 먹었다. 수정 전 소스123456789101112131415161718192021222324node_list = dict()parent = dict()c = int(input()) for i in range(c): node_list[i + 1] = list()for i in range(c - 1): a, b = input().split(' ') node_list[int(a)].append(int(b)) node_list[int(b)].append(int(a)) visited = list()to_visit = [1] while to_visit: now = to_visit.pop() for i in node_list[now]: if i not in..
2019.02.02 -
2019.02.01) 백준 1991번 풀이
간단하게 이진트리 사용1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071RootNode = None class _Node: def __init__(self, p0, p1=None, p2=None): self.name = p0 self.left = p1 self.right = p2 # 추가def add(name, left, right): global RootNode # 루트가 없으면 만들어 if not RootNode: RootNode = _Node(name, None if left == '.' else _Node(lef..
2019.02.01