Tags
- ์ ์๋ก
- SpringBoot
- ๊ทธ๋ํ ์ด๋ก
- sort
- ๊ตฌํ
- ์๋ฃ๊ตฌ์กฐ
- ์ํ
- stack
- ๊ทธ๋ํ ํ์
- ๋ฌธ์์ด
- BOJ
- DP
- Java
- ์ ๋ ฌ
- Dynamic Programming
- BFS
- Python
- dfs
- LV2
- ๋๋น ์ฐ์ ํ์
- CodingTest
- PGM
- ๊น์ด ์ฐ์ ํ์
- ๋ฐฑํธ๋ํน
- ๊ต์ฌ
- ์๋ฎฌ๋ ์ด์
- greedy
- queue
- Study
- Brute Force Algorithm
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_2252 : ์ค ์ธ์ฐ๊ธฐ ๋ณธ๋ฌธ
๐ ๋ฌธ์ ๋งํฌ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- N๋ช
์ ํ์๋ค์ ํค ์์๋๋ก ์ค์ ์ธ์ด๋ค.
- ๋ชจ๋์ ํค ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ ๊ฒ์ด ์๋๋ผ, ๋ ํ์์ ๋น๊ตํด์ ๋๊ฐ ์์ ์ค๋์ง์ ๋ํ ์ ๋ณด๋ง ์ฃผ์ด์ง๋ค.
- ์์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ๊ฐ๋จํ ๋ฌธ์ ์ด๋ค.
- ํค๊ฐ ํฐ ํ์์ด ์์ ์ค๋์ง, ์์ ํ์์ด ์์ ์ค๋์ง์ ๋ํ ์ ๋ณด๋ ์๊ณ , ๋๊ฐ ์์ผ๋ก ์ค๋๋๋ง ์ฃผ์ด์ง๋ค.
- ๋ฐ๋ผ์ ๋ต์ด ์ฌ๋ฌ๊ฐ์ง๊ฐ ๋ ์ ์์ผ๋ฏ๋ก ์๋ธํ ์คํฌ ๋ฌธ์ ์ด๋ค.
- BFS๋ก ๊ฐ๋จํ ํ์ดํ ์ ์๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// Input
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());
int[] in_cnt = new int[N + 1];
ArrayList<Integer>[] out_list = new ArrayList[N + 1];
for (int i = 1; i <= N; i++) {
out_list[i] = new ArrayList<>();
}
for (int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
int out = Integer.parseInt(st.nextToken());
int in = Integer.parseInt(st.nextToken());
in_cnt[in]++;
out_list[out].add(in);
}
// BFS
Queue<Integer> que = new ArrayDeque<>();
for (int i = 1; i <= N; i++) {
if (in_cnt[i] == 0)
que.add(i);
}
StringBuilder sb = new StringBuilder();
while (!que.isEmpty()) {
int n = que.poll();
sb.append(n).append(' ');
for (int i : out_list[n]) {
if (--in_cnt[i] == 0)
que.add(i);
}
}
// Output
sb.deleteCharAt(sb.length() - 1);
System.out.print(sb);
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- M๊ฐ์ ํค ์์๋ ๋จ๋ฐฉํฅ ๊ทธ๋ํ์ ๊ฐ์ ์ ๋ณด์ด๋ค.
- ๊ฐ์ ์ ๋ณด๋ฅผ out_list ์ ์ ์ฅํ๋ค.
(๋ ธ๋์์ ์ง์ถ ๋ฐฉํฅ ์ ๋ณด๋ง ์ ์ฅ) - ์ด๋, ๊ฐ ๋ ธ๋์ ์ง์ ์ฐจ์๋ฅผ in_cnt ๋ฐฐ์ด์์ ์นด์ดํธํ๋ค.
- ๊ฐ์ ์ ๋ณด๋ฅผ out_list ์ ์ ์ฅํ๋ค.
- ์ง์ ์ฐจ์๊ฐ 0์ธ ๋ ธ๋๋ค์ ํ์ ์ด๊ธฐ๊ฐ์ผ๋ก ๋ฃ๋๋ค. (์ด ์ค ์๋ฌด ๋ ธ๋๋ ์์์ด ๋ ์ ์๋ค)
- ํ๊ฐ ๋น ๋๊น์ง ๊ณ์ฐ์ ๋ฐ๋ณตํ๋ค.
- ํ์์ ๋ ธ๋ ๋ฒํธ๋ฅผ ๊บผ๋ด๋ฉด ์ถ๋ ฅํด์ค๋ค.
- ํด๋น ๋ฒํธ์ ์ฐ๊ฒฐ ๋ ๋ ธ๋์ ์ง์ ์ฐจ์ in_cnt๋ฅผ -1 ํ๋ค.
- in_cnt ๊ฐ 0์ด ๋ ๊ฒฝ์ฐ์ ํ์ ๋ฃ์ด์ค๋ค.
๐ธ end ๐ธ
- ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ์์ ์ ๋ ฌ์ ๋ ์ฌ๋ ธ์ง๋ง, ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๋ถํ ํ ๊ฑฐ์ ํ์ด๋ณด์ง ์์์ ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๋ถํ ๊ธฐ๋ก์ ๋ณด๊ณ ๊ตฌํํ๋ค.
- ๋ง์ ํ์ด๋ณด๋ ์ฝ๋๊ฐ ๊ฐ๋จํด์ ๋ค์์ ์๋ณด๊ณ ํ์ด๋ผ ์ ์์ ๊ฒ ๊ฐ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Lv.1 : ์ถ์ต ์ ์ (0) | 2023.04.25 |
---|---|
Lv.1 : ๋ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ (0) | 2023.04.25 |
Lv.1 : ๋๋ง์ ์ํธ (0) | 2023.04.20 |
BOJ_2110 : ๊ณต์ ๊ธฐ ์ค์น (0) | 2023.04.18 |
BOJ_1806 : ๋ถ๋ถํฉ (0) | 2023.04.18 |