알고리즘/BOJ

백준 4195번 친구 네트워크

꾸준함. 2018. 8. 5. 20:26

문제 링크입니다: https://www.acmicpc.net/problem/4195

 

Union Find(=Disjoint Set) 자료구조를 통해 풀 수 있는 문제였습니다.

기존의 문제들과 비교해서 까다로웠던 점은 원소가 인덱스로 주어지지 않고 사람 이름으로 주어진다는 점이였습니다.

따라서 map<string, int>를 통해 사람 이름에 인덱스를 부여하여 문제를 푸는 것이 핵심이였습니다.

 

알고리즘은 아래와 같습니다.

1. 두 사람 이름을 입력 받습니다.

i) 기존에 등장한 이름이라면 map에서 인덱스를 찾습니다.

ii) 새로 나온 이름이라면 새로운 인덱스를 부여하고 map에 저장합니다.

2. 두 사람의 루트를 탐색합니다.

i) 같은 집합 내에 있다면 해당 집합의 크기를 출력해줍니다.

ii) 다른 집합에 있다면 두 집합을 합쳐준 뒤 집합의 크기를 출력해줍니다.


 

개발환경:Visual Studio 2017

 

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

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

백준 1194번 달이 차오른다, 가자  (6) 2018.08.05
백준 10775번 공항  (2) 2018.08.05
백준 1976번 여행 가자  (0) 2018.08.05
백준 1717번 집합의 표현  (0) 2018.08.05
백준 15961번 회전 초밥  (0) 2018.08.05