2019.02.05) 백준 2250번 풀이 (PyPy3)
2019. 2. 5. 16:40ㆍ프로그래밍(주력)/백준 문제풀이
알고리즘을 생각하고 시간초과를 보고
만들었더니 재귀한계로 런타임에러를 보고
좀 코드를 몰아서 쓰지 않고 펼쳐서 쓰니 얼떨결에 맞았다. 2일동안 고생한 보람이..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | count = 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] = (left, right) root[now] += 1 # 자식한테 카운터 한개씩 if left != -1: root[left] += 1 if right != -1: root[right] += 1 # 루트는 자식한테 주는 카운터가 없으니 카운터가 1이겠죠 for i in range(c): if root[i + 1] == 1: Root = i + 1 lev = list(0 for i in range(c)) his = list(list() for i in range(c + 1)) # 중위순회 기록 def inorder_traversal(root_node, level): global count, max_length, max_level, graph if graph[root_node][0] != -1: inorder_traversal(graph[root_node][0], level + 1) count += 1 his[level].append(count) if graph[root_node][1] != -1: inorder_traversal(graph[root_node][1], level + 1) inorder_traversal(Root, 1) max_length = 0 max_level = 0 # 기록한거 간단하게 비교 for i in range(1, c + 1): if len(his[i]) == 0: break if his[i][-1] - his[i][0] + 1 > max_length: max_level = i max_length = his[i][-1] - his[i][0] + 1 print(max_level, max_length) | cs |
'프로그래밍(주력) > 백준 문제풀이' 카테고리의 다른 글
2019.02.07) 백준 10845번 풀이 (PyPy3) (0) | 2019.02.07 |
---|---|
2019.02.06) 백준 7568번 풀이 (PyPy3) (0) | 2019.02.06 |
2019.02.04) 백준 1065번 풀이 (PyPy3) (0) | 2019.02.04 |
2019.02.03) 백준 1167번 풀이 (PyPy3) (0) | 2019.02.03 |
2019.02.02) 백준 11725번 풀이 (PyPy3) (0) | 2019.02.02 |