
package algostudy09_BOJ_17352;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
public class Review {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int bridge[] = new int[n+1];
for(int i = 1; i <=n ; i++) {
bridge[i] = i;
}
for(int i = 0 ; i < n-2 ; i++) {
String tmp[] = br.readLine().split(" ");
//주어진 다리들을 연결
union(bridge,Integer.parseInt(tmp[0]),Integer.parseInt(tmp[1]));
}
//set에 넣어서 중복 제거
HashSet<Integer> set = new HashSet<Integer>();
for(int i = 1 ; i <=n ; i++) {
set.add(getParent(bridge, bridge[i]));
}
for(int num :set) {
System.out.print(num+" ");
}
}
public static int getParent(int bridge[],int a) {
if(a == bridge[a]) {
return a;
}else {
return getParent(bridge,bridge[a]);
}
}
public static void union(int bridge[],int a,int b) {
a = getParent(bridge,a);
b = getParent(bridge,b);
if(a<b) {
bridge[b] = a;
}else {
bridge[a] = b;
}
}
}
풀이법
정수 두개를 받을때 getParent 함수를통해 연결된 부모의 값을 받아오고
union함수를 이용하여 부모의 값으로 연결해준다
그후 set을 통해여 중복을 제거하고 하나씩 풀력해준다.
'알고리즘 문제풀이' 카테고리의 다른 글
백준 20164 홀수홀릭호석 (0) | 2021.06.28 |
---|---|
백준 10216 Count Circle Groups (0) | 2021.01.12 |
백준 16236 아기상어 (bfs,구현,시뮬) (0) | 2020.12.30 |
프로그래머스 점프와 순간이동 (0) | 2020.11.23 |
백준 14500 테트로미노 (0) | 2020.09.23 |
댓글