-
https://www.acmicpc.net/problem/1717
1717번: 집합의 표현
첫째 줄에 n(1 ≤ n ≤ 1,000,000), m(1 ≤ m ≤ 100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는
www.acmicpc.net
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%201717
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
해당 문제는 원소 개수가 주어지고 각 원소들 간의 연산이 주어졌을 때
해당 연산을 하거나 결과를 출력하는 문제다.
연산은 두 원소를 합집합 하는 연산과 두 원소가 같은 집합인지 체크하는 연산 두 개를
구현해야 한다.
문제를 일고 union find를 사용하면 되겠다고 생각했고 문제를 쉽게 해결했다.
처음 원소의 개수+1만큼(0~n) 1차원 배열을 선언하고 초깃값으로 자신 값을 넣어준다
fide는 위의 배열 값을 통해 자신의 부모 값을 찾아 리턴해주며,
union을 하게 된다면 두 숫자를 find 했을 때 크기 비교를 통해 큰 값에다 간 작은 값을 넣어주는 식으로 진행했다..
728x90'알고리즘' 카테고리의 다른 글
Baekjoon 2644 촌수계산 JAVA (0) 2021.11.16 댓글