Tags
- ์๋ฃ๊ตฌ์กฐ
- Java
- BFS
- dfs
- ๊น์ด ์ฐ์ ํ์
- ๋ฌธ์์ด
- ๊ทธ๋ํ ํ์
- ์ํ
- greedy
- SpringBoot
- sort
- CodingTest
- stack
- queue
- Brute Force Algorithm
- PGM
- DP
- Dynamic Programming
- ๊ต์ฌ
- LV2
- ๋๋น ์ฐ์ ํ์
- ์ ๋ ฌ
- Study
- BOJ
- Python
- ๊ทธ๋ํ ์ด๋ก
- ์ ์๋ก
- ์๋ฎฌ๋ ์ด์
- ๋ฐฑํธ๋ํน
- ๊ตฌํ
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_11724 : ์ฐ๊ฒฐ ์์์ ๊ฐ์ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- n๊ฐ์ ์ ์ ์ฌ์ด์ ๊ฐ์ ์ ์ ๋ณด๊ฐ m๊ฐ ์
๋ ฅ๋๋ค.
- ์ฐ๊ฒฐ๋ ๋ ธ๋์ ๋ฌถ์(์ฐ๊ฒฐ ์์) ์๋ฅผ ์ถ๋ ฅํ๋ค.
- n๊ฐ์ ๊ฐ ๋
ธ๋๋ฅผ ์์์ผ๋ก BFS ํน์ DFS๋ก ์ฐ๊ฒฐ๋ ๋
ธ๋๋ฅผ ์ฒดํฌํ๋ค.
- ์ฌ๊ธฐ์๋ BFS๋ฅผ ์ฌ์ฉํ๋ค.
- BFS๋ฅผ ์ํด ํ์ visit ๋ฐฐ์ด์ ์ฌ์ฉํ๋ค.
- visit ๋ฐฐ์ด์ ๋ฐฉ๋ฌธํ์ง ์์ผ๋ฉด 0, ๋ฐฉ๋ฌธํ๋ฉด ๋ฌถ์ ๋ฒํธ๋ฅผ ์ ์ฅํ๋ค. (0๋ง ์๋๋ฉด ๋๋ค.)
- ๋ฌถ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 1 : input
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
ArrayList<Integer>[] graph = new ArrayList[n + 1];
for (int i = 1; i <= n; i++) {
graph[i] = new ArrayList<>();
}
for (int i = 0; i < m; i++) {
int u = sc.nextInt();
int v = sc.nextInt();
if (!graph[u].contains(v))
graph[u].add(v);
if (!graph[v].contains(u))
graph[v].add(u);
}
// 2 : BFS
Queue<Integer> queue = new LinkedList<>();
int[] visit = new int[n + 1];
int gruop = 0;
for (int i = 1; i <= n; i++) {
if (visit[i] == 0) {
gruop++;
queue.add(i);
while (!queue.isEmpty()) {
int now = queue.poll();
if (visit[now] == 0) {
visit[now] = gruop;
for (int g : graph[now]) {
queue.add(g);
}
}
}
}
}
System.out.println(gruop);
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- 1) ๋
ธ๋ ์ n๊ณผ ๊ฐ์ ์ m์ ์
๋ ฅ๋ฐ๊ณ , n ํฌ๊ธฐ์ ArrayList ๋ฐฐ์ด graph๋ฅผ ์ ์ธํ๋ค.
- m๊ฐ์ ๊ฐ์ ์ ๋ณด๋ฅผ ์ ๋ ฅ ๋ฐ์ graph์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
- 2) BFS๋ฅผ ์ํํ๋ค.
- ํ, visit ๋ฐฐ์ด, ๊ทธ๋ฃน ์ ๋ณ์๋ฅผ ์ ์ธํ๋ค.
- 1๋ถํฐ n๋ฒ ๋ ธ๋๊น์ง ๊ฐ๊ฐ ์์๋ ธ๋๋ก ์ค์ ํด๋ณธ๋ค.
- ์์ ๋
ธ๋๋ฅผ ๋ฐฉ๋ฌธํ์ง ์์์ผ๋ฉด BFS๋ฅผ ์ํํ๋ค.
- ๊ทธ๋ฃน ๋ฒํธ๋ฅผ +1 ํ๋ค.
- ์์ ๋ ธ๋๋ฅผ ํ์ ๋ด๋๋ค.
- ํ๊ฐ ๋น ๋๊น์ง ํ์ํ๋ค.
- ํ์์์ ๊ฐ์ ํ๋ poll ํ ๋ค now์ ์ ์ฅํ๋ค.
- ๋ฐฉ๋ฌธํ ๋
ธ๋ visit[now] ๊ฐ์ด 0์ด๋ฉด, ๋ฐฉ๋ฌธํ์ง ์์๋ค๋ ๊ฒ์ด๋ฏ๋ก ๊ณ์ฐ์ ์งํํ๋ค.
- visit[now]์ ๊ฐ์ ๋ฃ๋๋ค(0๋ง ์๋๋ฉด ๋์ง๋ง, ์ด์๊ฒ ๊ทธ๋ฃน ๋ฒํธ๋ฅผ ๋ฃ์ด์ฃผ์๋ค.)
- now๋ฒ์งธ ๋
ธ๋์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ๋
ธ๋๋ฅผ ํ์ ๋ฃ์ด์ค๋ค.
- ๋ฐฉ๋ฌธํ๋์ง ์ํ๋์ง ํ์ธํด๋ ๋์ง๋ง, ์ด์ฐจํผ visit[now]๊ฐ 0์ธ์ง ํ์ธํ๋ ์ฝ๋๊ฐ ์์ผ๋ฏ๋ก ๋ฐ๋ก ์ถ๊ฐํ์ง ์์๋ค.
๐ธ end ๐ธ
- ์ค๋๋ง์ BFS๋ฌธ์ ๋ฅผ ํ์ด๋ณด์๋๋ฐ, ์์ง ๊ทธ๋ํ ๋ฌธ์ ๋ค์ ์๋ จ๋๊ฐ ๋ฎ์ ๊ฒ ๊ฐ๋ค.
- ๊ทธ๋ํ์ dp๋ฅผ ์ค์ฌ์ผ๋ก ๋ฌธ์ ๋ฅผ ๋ง์ด ํ์ด๋ณด์์ผ๊ฒ ๋ค.
- ๊ฐ ๋ ธ๋๊ฐ ์ด๋ค ๊ทธ๋ฃน์ธ์ง ๋ํ๋ด๊ณ ์ visit์ int[]๋ก ์ ์ธํ์ง๋ง, boolean[]์ด ๋ ๋ง๋ ๊ฒ ๊ฐ๋ค.
- ๋ฌธ์ ๋ถ์ ๋ฐ ์ฝ๋ ๊ณํ์ ์จ๋ณด๊ณ ์ฝ๋ฉ์ ๋ค์ด๊ฐ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_2596 : ๋น๋ฐํธ์ง (0) | 2023.01.25 |
---|---|
BOJ_9372 : ์๊ทผ์ด์ ์ฌํ (0) | 2023.01.24 |
BOJ_18870 : ์ขํ ์์ถ (0) | 2023.01.23 |
BOJ_24060 : ์๊ณ ๋ฆฌ์ฆ ์์ - ๋ณํฉ ์ ๋ ฌ 1 (0) | 2023.01.23 |
BOJ_25501 : ์ฌ๊ท์ ๊ท์ฌ (0) | 2023.01.20 |