알고리즘 연습
[ 백준_BOJ ] 1717. 집합의 표현 _ JAVA 문제풀이
코딩하는 너구리
2019. 10. 16. 11:09
반응형
문제

풀이
Union-Find를 이용하여 풀이해야 하는 문제입니다.
0일 때 union 연산을 수행하고 1일 때 같은 집합에 있는지를 비교하기 때문에 flag 변수를 만들어서 분류해주었습니다.
문제에서 여러 번 isSame( ) 연산을 수행하기 때문에 StringBuilder( ) 를 이용해서 한 번만 출력할 수 있도록 해주었습니다.
추가적으로, union( ) 연산에서 연산의 수행속도를 높여주기 위해
x y 중 큰 수를 부모로 바꾸어주도록 하였습니다.
코드


출처
https://www.acmicpc.net/problem/1717
1717번: 집합의 표현
첫째 줄에 n(1≤n≤1,000,000), m(1≤m≤100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 a가 포함되어 있는 집합과, b가 포함되어 있는 집합을 합친다는 의미이다. 두 원소가 같은 집합에 포함되어 있는지를 확인하는 연산은 1 a b의 형태로 입력이 주어진다. 이는 a와 b가 같은 집합에 포함되어 있는지를 확인하는 연산이다. a
www.acmicpc.net
반응형