본문 바로가기

PS/백준

[BOJ] 백준 4195 친구 네트워크 (Swift)

반응형

문제

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

 

4195번: 친구 네트워크

첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스의 첫째 줄에는 친구 관계의 수 F가 주어지며, 이 값은 100,000을 넘지 않는다. 다음 F개의 줄에는 친구 관계가 생긴 순서대로 주어진

www.acmicpc.net

풀이

유니온 파인드로 풀이할 수 있는 문제입니다.
노드가 Int가 아닌 String 값이기 때문에, [String: String] 의 딕셔너리로 선언해주었습니다.
관계의 노드 수를 구하기 위해 level이라는 [String: Int]의 딕셔너리를 선언해주었습니다.
초기 입력받을 때, 부모노드를 자기 자신으로 초기화 해주고, level도 1로 초기화 해주었습니다.

부모 노드를 찾는 방식(find)은 기존 방법과 비슷한 방법으로 구현해주었습니다.
합연산(union)을 할 때 부모노드가 다르다면 사전순으로 앞선 이름이 부모노드가 될 수 있도록 구현해주었고,
두 사람의 친구수를 더해서 level에 넣어주었습니다.

그 이후, 두 사람 중 한 사람의 부모노드를 찾아 부모노드의 level을 출력해주었습니다.

소스코드

후기

String 값을 가지고 유니온 파인드를 처음 해봤지만, 생각한대로 문제가 풀려서 다행이었습니다.
문제를 풀고 다른 분들의 풀이를 보니 더 깔끔하게 풀이하신 분들이 많아서 좋은 참고가 되었습니다.

반응형