트리 루트를 비교해야 하기 때문에 parent[i] 대신 getParent(i)를 쓰셔야 하지 않을까요?
17352번 - 여러분의 다리가 되어 드리겠습니다!
@solveit
우선 댓글 감사합니다.
solveit님의 질문이 잘 이해 되지 않습니다.
말씀하신 parent[i]가 38번 째 줄에 있는 것을 말씀하시는 건가요?
parent[a] = b는 'a의 부모 노드(루트 노드)가 b(최솟값)'이기 때문에
한 그룹(소속)이면, 부모 노드(=루트 노드)가 같음을 이용했습니다.
@solveit
5
2 3
4 5
3 5
위를 실행시켜보면, 아래와 같은 상황이 나오네요.
parent[1] = 1, getParent(1) = 1
parent[2] = 2, getParent(2) = 2
parent[3] = 2, getParent(3) = 2
parent[4] = 2, getParent(4) = 2
parent[5] = 4, getParent(5) = 2
자신의 '부모 노드'에 대한 '값'을 바꿔주는 것이니(parent[부모]),
parent[자신]의 값은 그대로인거네요.
감사합니다.
이해 됐습니다.
댓글을 작성하려면 로그인해야 합니다.
park780172 4년 전
저는 Union-Find로 접근하였습니다.
점(섬)의 개수가 N개 이고,
입력하는 다리의 개수가 (N - 2)개 입니다.
O----O----O----O O
1 2 3 4 5
O----O----O O----O
1 2 3 4 5
.
.
.
O O----O----O----O
1 2 3 4 5
등등
위에 처럼 어떤 i번 째 섬과 (i + 1)번 째 섬이
연결되어 있지 않은 경우가 무조건 존재하니,
이런 경우가 존재하면 바로 종료하도록 return 하였습니다.
제가 어떤 부분에 있어서 잘못 접근하고 있는지 궁금합니다!