티스토리 뷰

PS

백준 11437. LCA

tose33 2022. 12. 29. 14:43

https://www.acmicpc.net/problem/11437

 

11437번: LCA

첫째 줄에 노드의 개수 N이 주어지고, 다음 N-1개 줄에는 트리 상에서 연결된 두 정점이 주어진다. 그 다음 줄에는 가장 가까운 공통 조상을 알고싶은 쌍의 개수 M이 주어지고, 다음 M개 줄에는 정

www.acmicpc.net

 

공통 부모를 찾는 방법은 금방 생각해냈는데 이상한데서 삽질을 했다.

 

우선 공통 부모를 찾는 방법은 다음과 같다.

1. 모든 노드들의 깊이를 기록한다. (루트는 노드1로 주어진다)

2. 두 노드의 공통 부모를 찾을때, 두 노드의 깊이가 다르다면 맞춰준다. 

    -> 깊이가 더 깊은 노드를 깊이가 낮은 노드까지 부모로 올라가면 된다.

3. 깊이를 맞췄으므로 1 칸씩 부모로 올라가다가, 같은 노드를 만나면 그 노드가 가장 까까운 공통 조상이다. 

 

내가 삽질한건  두 노드가 주어지면, 부모로 거슬러 올라가야 하므로 누가 부모이고 누가 자식인지 판단해야 하는 부분인데, 생각해보면 부모는 한개 일 수 밖에 없으므로 그냥 깊이 기록하면서 이전 노드를 부모로 기록하면 된다.

 

 

'PS' 카테고리의 다른 글

백준 17136. 색종이 붙이기  (0) 2022.12.30
백준 2644. 촌수계산  (0) 2022.12.29
백준 14606. 피자 (Small)  (0) 2022.12.27
백준 20040. 사이클 게임  (0) 2022.12.27
백준 18870. 좌표 압축  (0) 2022.12.27
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함