Tags
- ์ ๋ ฌ
- LV2
- ๊ตฌํ
- ์ํ
- ๋ฐฑํธ๋ํน
- queue
- ๋ฌธ์์ด
- ๊ทธ๋ํ ํ์
- Python
- Brute Force Algorithm
- ๊ต์ฌ
- stack
- BFS
- ์ ์๋ก
- SpringBoot
- ๋๋น ์ฐ์ ํ์
- sort
- PGM
- greedy
- Study
- ์๋ฃ๊ตฌ์กฐ
- Dynamic Programming
- ๊ทธ๋ํ ์ด๋ก
- DP
- dfs
- ์๋ฎฌ๋ ์ด์
- ๊น์ด ์ฐ์ ํ์
- CodingTest
- Java
- BOJ
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_1717 : ์งํฉ์ ํํ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- 0๋ถํฐ n๊น์ง ์์๊ฐ 1๊ฐ์ฉ ๋ค์ด์๋ n+1๊ฐ์ ์งํฉ์์ ์
๋ ฅ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
- 0์ ๋ ์งํฉ์ ํฉ์งํฉ ์ฐ์ฐ์ ์ํํ๋ค.
- 1์ ๋ ์งํฉ์ด ๊ฐ์ ์งํฉ์ธ์ง ํ์ธํด, ๊ฐ์ผ๋ฉด "YES" ํน์ "yes", ๋ค๋ฅด๋ฉด "NO" ํน์ "no"๋ฅผ ์ถ๋ ฅํ๋ค.
- ์ ํ์ ์ธ union-find ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์ด๋ค.
- ํฉ์งํฉ ์ฐ์ฐ์ union์ ์ฌ์ฉํ๋ค.
- ๋ ์งํฉ์ด ๊ฐ์ ์งํฉ์ธ์ง ํ์ธ์ find๋ฅผ ์ฌ์ฉํด ๋ฐํ๊ฐ์ ๋น๊ตํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private static int[] parents;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
parents = new int[n+1];
for (int i = 0; i <= n; i++) {
parents[i] = i;
}
for (int i = 0; i < m; i++) {
st = new StringTokenizer(br.readLine());
if (Integer.parseInt(st.nextToken()) == 0) union(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
else if (find(Integer.parseInt(st.nextToken())) == find(Integer.parseInt(st.nextToken())))
System.out.println("YES");
else
System.out.println("NO");
}
}
private static int find(int n) {
if (parents[n] == n) return n;
return parents[n] = find(parents[n]);
}
private static boolean union(int n1, int n2) {
int p1 = find(n1);
int p2 = find(n2);
if(p1 == p2) return false;
parents[p2] = p1;
return true;
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- make-set() ๋ฉ์๋๋ ๋ฐ๋ก ๋ง๋ค์ง ์๊ณ paretns๋ฐฐ์ด์ main์์ ์ด๊ธฐํํ๋ค.
- ์ ๋ ฅ ์ฐ์ฐ์ด 0์ผ ๊ฒฝ์ฐ๋ ๊ฐ ์์๊ฐ ๋ค์ด์๋ ๋ ์งํฉ์ union ํ๋ค.
- ์
๋ ฅ ์ฐ์ฐ์ด 1์ผ ๊ฒฝ์ฐ๋ ๊ฐ ์์๋ฅผ find ์ฐ์ฐ ํ ๋ฐํ๊ฐ์ ๋น๊ตํ๋ค.
- ๋ ๋ฐํ๊ฐ์ด ๊ฐ์ผ๋ฉด "YES"๋ฅผ ์ถ๋ ฅํ๋ค.
- ๋ ๋ฐํ๊ฐ์ด ๋ค๋ฅด๋ฉด "NO"๋ฅผ ์ถ๋ ฅํ๋ค.
๐ธ end ๐ธ
- union-find ์๊ณ ๋ฆฌ์ฆ์ ์๊ณ ๋ฌธ์ ๋ฅผ ๋ณด๋, ์์ฃผ ์ฝ๊ฒ ํ์ดํ ์ ์์๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_14502 : ์ฐ๊ตฌ์ (0) | 2023.03.08 |
---|---|
BOJ_1916 : ์ต์๋น์ฉ ๊ตฌํ๊ธฐ (0) | 2023.03.08 |
BOJ_1926 : ๊ทธ๋ฆผ (0) | 2023.03.05 |
BOJ_3109 : ๋นต์ง (0) | 2023.02.22 |
BOJ_6987 : ์๋์ปต (0) | 2023.02.21 |