반응형
문제
https://www.acmicpc.net/problem/4195
풀이
유니온 파인드로 풀이할 수 있는 문제입니다.
노드가 Int가 아닌 String 값이기 때문에, [String: String] 의 딕셔너리로 선언해주었습니다.
관계의 노드 수를 구하기 위해 level이라는 [String: Int]의 딕셔너리를 선언해주었습니다.
초기 입력받을 때, 부모노드를 자기 자신으로 초기화 해주고, level도 1로 초기화 해주었습니다.
부모 노드를 찾는 방식(find)은 기존 방법과 비슷한 방법으로 구현해주었습니다.
합연산(union)을 할 때 부모노드가 다르다면 사전순으로 앞선 이름이 부모노드가 될 수 있도록 구현해주었고,
두 사람의 친구수를 더해서 level에 넣어주었습니다.
그 이후, 두 사람 중 한 사람의 부모노드를 찾아 부모노드의 level을 출력해주었습니다.
소스코드
후기
String 값을 가지고 유니온 파인드를 처음 해봤지만, 생각한대로 문제가 풀려서 다행이었습니다.
문제를 풀고 다른 분들의 풀이를 보니 더 깔끔하게 풀이하신 분들이 많아서 좋은 참고가 되었습니다.
반응형
'PS > 백준' 카테고리의 다른 글
[BOJ] 백준 9372 상근이의 여행 (Swift) (0) | 2023.05.16 |
---|---|
[BOJ] 백준 20040 사이클 게임 (Swift) (0) | 2023.05.16 |
[BOJ] 백준 1976 여행 가자 (Swift) (0) | 2023.05.16 |
[BOJ] 백준 1717 집합의 표현 (Swift) (1) | 2023.05.16 |
[BOJ] 백준 4803 트리 (Swift) (0) | 2023.05.16 |