반응형 분류 전체보기252 [백준][Python] 3584번 가장 가까운 공통 조상 3584번: 가장 가까운 공통 조상 루트가 있는 트리(rooted tree)가 주어지고, 그 트리 상의 두 정점이 주어질 때 그들의 가장 가까운 공통 조상(Nearest Common Anscestor)은 다음과 같이 정의됩니다. 두 노드의 가장 가까운 공통 조상은, 두 www.acmicpc.net 코드 import sys def parent(a): p = [] p.append(a) # 자기 자신도 조상으로 포함 for _ in range(N): if tree[a] == []: break else: p.append(tree[a]) a = tree[a] return p T = int(input()) for _ in range(T): N = int(input()) tree = [[] for _ in range.. 2022. 3. 8. [백준][Python] 15900번 나무 탈출 15900번: 나무 탈출 평소에 사이가 좋지 않던 성원이와 형석이가 드디어 제대로 한 판 붙으려고 한다. 성원이와 형석이 둘과 모두 똑같이 친한 인섭이가 대결 종목을 정해 가져왔다. 바로 '나무 탈출' 이라는 보드게 www.acmicpc.net 코드 import sys sys.setrecursionlimit(10**5) N = int(input()) tree = [[] for _ in range(N+1)] depth = [0 for _ in range(N+1)] visit = [0 for _ in range(N+1)] ans = 0 for _ in range(N-1): a,b = map(int,sys.stdin.readline().split()) tree[a].append(b) tree[b].append.. 2022. 3. 7. [백준][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. 이전 1 ··· 50 51 52 53 54 55 56 ··· 63 다음 반응형