본문 바로가기
반응형

알고리즘/트리19

[백준][Python] 20364번 부동산 다툼 20364번: 부동산 다툼 첫 번째 줄에 땅 개수 N과 꽉꽉나라에 사는 오리 수 Q가 공백으로 구분되어 주어진다. (2 ≤ N 0: if b in vis: ans = b b//=2 if ans == 0: vis.add(a) print(ans) for i in num: visit(i) 설명 처음에 vis를 리스트로 했더니 시간초과가 떠서 set으로 바꿔주었다. 자식노드의 번호는 이미 정해져있기 때문에 오리가 원하는 땅을 기준으로 위로 거슬러 올라갔다. 올라갈 때 부모 노드는 2로 나눈 값이기 때문이다. 거슬러 올라가기 때문에 처음 마주치는 점유된 땅은 코드 상으로는 가장 마지막에 만나는 값이다. 따라서 점유된 땅 번호를 계속 갱신시켜줘야 한다. 만약 num=0일 때, 즉 원하는 땅을 가질 수 있을 때는 v.. 2022. 3. 4.
[백준][Python] 14675번 단절점과 단절선 14675번: 단절점과 단절선 프로그램의 입력은 표준 입력으로 받는다. 입력의 첫 줄에는 트리의 정점 개수 N이 주어진다. (2 ≤ N ≤ 100,000) 트리의 정점은 1번부터 n번까지 존재한다. 다음 줄부터 N-1개의 줄에 걸쳐 간선의 정 www.acmicpc.net 코드 import sys n = int(input()) tree = [[] for _ in range(n+1)] for _ in range(n-1): a,b = map(int,sys.stdin.readline().split()) tree[a].append(b) tree[b].append(a) q = int(input()) for _ in range(q): t,k = map(int,sys.stdin.readline().split()) if.. 2022. 3. 3.
[백준][Python] 5639번 이진 검색 트리 5639번: 이진 검색 트리 트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다 www.acmicpc.net 코드 import sys sys.setrecursionlimit(10**6) num_list = [] while True: try: num = int(input()) num_list.append(num) except: break def postorder(first,end): if first > end: return mid = end+1 # 루트보다 큰 값이 존재하지 않을 경우를 대비 for i in range(first+1,end+1): if num.. 2022. 3. 1.
[백준][Python 파이썬] 1068번 트리 1068번: 트리 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다 www.acmicpc.net 코드 import sys n = int(input()) tree = [[] for _ in range(n)] p = list(map(int,sys.stdin.readline().split())) for i in range(n): tree[i] = p[i] remove = int(input()) def delete(remove): tree[remove] = -2 for i in range(n): if tree[i] == remove: tree[i] = -2 .. 2022. 2. 28.
반응형