알고리즘

백준 11437번 LCA

YL 2021. 6. 11. 00:43
반응형

BOJ 11437번 LCA https://www.acmicpc.net/problem/11437

 

풀이:

다른 사람들이 왜 이렇게 풀어야만 했는지 이해를 못해서.... 한참 헤맸다

문제에 주어지지 않는 게 있는데

*부모-자식 관계의 정의*가 주어지지 않는다.

1. 주어진 정점들을 다 연결했을 때 1과 가까운 노드가 부모가 된다.

최상위가 1번이라서 작은수가 부모가 된다고 착각하면 방황하게 된다ㅠㅠ

정점을 하나씩 탐색 돌리면 시간 초과가 뜨고, 문제는 항상 한 쌍으로 주어지기 때문에

2. 반복문(for/while) 하나에서 두 정점을 동시에 탐색해야 한다.

두 정점을 동시에 탐색하려면 각 정점의 단계(Level)을 알아야한다.

정점별로 탐색을 돌리면 시간초과가 뜨기 때문에

3. 각 정점별 단계를 미리 단계를 알아놔야한다. 

두 정점을 잇는 간선정보가 차례대로 주어지지 않기 때문에

4. 간선정보를 전부 받아 탐색을 통해 단계를 확인해야한다.

5. 탐색 전에는 부모-자식 관계를 알 수 없기 때문에 일단 양방향 노드로 구현한다.

 

 

 

단계가 서로 다르기 때문에 하위 단계 정점을 먼저 위로 끌어올려 맞춰야한다
부모-자식 관계는 간선 정보상 1에 가까운 정점이 부모가 된다

 

반응형

'알고리즘' 카테고리의 다른 글

백준 10775 공항 Java  (0) 2021.07.10
알고리즘 문제 핀볼  (0) 2021.06.13
백준 1854 K번째 최단경로  (0) 2021.06.02
백준 1238 파티 Java  (0) 2021.05.22
백준 1197 최소 스패닝 트리 Java  (0) 2021.05.12