Tags
- ๋ฐฑํธ๋ํน
- stack
- CodingTest
- SpringBoot
- Dynamic Programming
- sort
- Java
- DP
- Python
- greedy
- BFS
- ์๋ฎฌ๋ ์ด์
- ๊ทธ๋ํ ํ์
- ์ ๋ ฌ
- LV2
- ์ํ
- ์๋ฃ๊ตฌ์กฐ
- ๋ฌธ์์ด
- ๊ตฌํ
- Brute Force Algorithm
- queue
- PGM
- dfs
- ๋๋น ์ฐ์ ํ์
- ๊น์ด ์ฐ์ ํ์
- ๊ต์ฌ
- BOJ
- ์ ์๋ก
- ๊ทธ๋ํ ์ด๋ก
- Study
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_1516 : ๊ฒ์ ๊ฐ๋ฐ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ์คํํฌ๋ ํํธ ๊ฐ์ ๊ฒ์์์ ๊ฐ ๊ฑด๋ฌผ์ ์ง๋๋ฐ ํ์ํ ์ต์ ์๊ฐ์ ๊ตฌํด๋ณด์.
- N๊ฐ์ ๊ฑด๋ฌผ ๋ณ ์ง๋ ์๊ฐ๊ณผ ๋จผ์ ์ง์ด์ ธ์ผ ํ๋ ๊ฑด๋ฌผ์ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ค.
๐ธ ๋ฌธ์ ํ์ด ๐ธ
- ์ ํ ๋์ด์ผ ํ๋ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ฏ๋ก ์์ ์ ๋ ฌ(Topology Sort)์ ํ์ฉํด ํ์ดํ ์ ์๋ค.
- ์ ํ ๊ฑด๋ฌผ ๊ฑด์ค ์งํ ํด๋น ๊ฑด๋ฌผ์ ์ง๋๋ฐ, ์ ํ ๊ฑด๋ฌผ์ด ์ฌ๋ฌ๊ฐ์ผ ๊ฒฝ์ฐ ์์๋ฅผ ์ ํ ์ ์๋ค.
- ๋ฐ๋ผ์ ์ ํ ๊ฑด๋ฌผ์ด ์ง์ด์ง๋ ์๊ฐ์ ์ต๋๊ฐ + ํ์ฌ ๊ฑด๋ฌผ์ ์ง๋ ์๊ฐ์ ๊ตฌํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.*;
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 {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
int[] d = new int[N + 1];
int[] time = new int[N + 1];
ArrayList<Integer>[] adjList = new ArrayList[N + 1];
for (int i = 1; i <= N; i++) {
adjList[i] = new ArrayList<>();
}
for (int i = 1; i <= N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
time[i] = a;
while ((a = Integer.parseInt(st.nextToken())) > -1) {
adjList[a].add(i);
d[i]++;
}
}
Queue<Integer> que = new ArrayDeque<>();
int[] answer = new int[N + 1];
for (int i = 1; i <= N; i++) {
if (d[i] == 0) {
que.offer(i);
answer[i] = time[i];
}
}
while (!que.isEmpty()) {
int a = que.poll();
for (int i : adjList[a]) {
answer[i] = Math.max(answer[i], answer[a] + time[i]);
if (--d[i] == 0) {
que.offer(i);
}
}
}
for (int i = 1; i <= N; i++) {
sb.append(answer[i]).append('\n');
}
bw.write(sb.toString());
bw.flush();
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- N๊ฐ์ ๊ฑด๋ฌผ์ ์ง์ด์ง๋ ์๊ฐ์ time, ์ง์ ์ฐจ์๋ฅผ d ๋ฐฐ์ด์ ์ ์ฅํ๋ค.
- ์์ ์ ๋ ฌ์ ์ํด ๊ฐ์ ์ ๋ณด๋ฅผ ArrayList ๋ฐฐ์ด adjList์ ์ ์ฅํ๋ค.
- ํ๋ฅผ ๋ง๋ค๊ณ , ํ์ฌ ์ง์ ์ฐจ์๊ฐ 0์ธ ๊ฑด๋ฌผ์ ๊ฑด์ค ์๊ฐ์ ๋ฐ๋ก ์ ๋ต ๋ฐฐ์ด answer์ ์ ์ฅํ๊ณ , ๊ฑด๋ฌผ ๋ฒํธ๋ ํ์ ๋ฃ๋๋ค.
- ํ๊ฐ ๋น ๋๊น์ง ๊ณ์ฐ์ ๋ฐ๋ณตํ๋ค.
- ํ์์ ๋์จ ๊ฑด๋ฌผ์ ๋ค์ ๊ฑด์ค ๊ฑด๋ฌผ์ ์๊ฐ์ answer์ ์ ์ฅํ๋ค.
- ์ด๋, ๊ธฐ์กด ๊ฑด์ค ์๊ฐ๊ณผ ํ์ฌ ๊ฑด๋ฌผ ์งํ๋ก ์ง๋ ๊ฑด์ค ์๊ฐ ์ค ํฐ ๊ฐ์ ์ ์ฅํ๋ค.
- ๋ง์ฝ ์ง์ ์ฐจ์๊ฐ 0์ด ๋์๋ค๋ฉด ํ์ ๋ฃ๋๋ค.
- ์ ๋ต ๋ฐฐ์ด์ ์ ์ฅ ๋ ๊ฑด์ค ์๊ฐ์ ์ถ๋ ฅํ๋ค.
๐ธ end ๐ธ
- ๋ถ๋ถ์ ์ธ ์ ํ ์์ ์ ๋ณด๊ฐ ๋์์ผ๋, ์์ ์ ๋ ฌ์ด ๋ฐ๋ก ๋ ์ฌ๋๋ค.
- ๋ค๋ง, ์ฒซ ํ์ด์์๋ ์ง์ ์ฐจ์๊ฐ 0์ด ๋์์๋ answer[i]์ ๊ฐ์ ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก ํ๋๋ฐ ํ๋ ธ๋ค.
- ๊ฑด๋ฌผ์ด ๋์์ ์ง์ด์ง ์ ์์ผ๋ฏ๋ก, ์ ํ ์์ ์ค ๋ ์ค๋๊ฑธ๋ฆฌ๋ ๊ฐ์ผ๋ก ๊ณ์ฐํด์ผ ํ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_1854 : K๋ฒ์งธ ์ต๋จ๊ฒฝ๋ก ์ฐพ๊ธฐ (0) | 2024.09.26 |
---|---|
BOJ_1948 : ์๊ณ๊ฒฝ๋ก (0) | 2024.09.12 |
BOJ_1113 : ์์์ฅ ๋ง๋ค๊ธฐ (0) | 2024.08.20 |
BOJ_15989 : 1, 2, 3 ๋ํ๊ธฐ 4 (0) | 2024.08.16 |
Lv.3 : ๊ณ ๊ณ ํ ์ต๊ณ ์ ๋ฐ๊ฒฌ (0) | 2024.08.15 |