Tags
- Study
- CodingTest
- BOJ
- ๋ฐฑํธ๋ํน
- sort
- ์๋ฎฌ๋ ์ด์
- ์๋ฃ๊ตฌ์กฐ
- SpringBoot
- stack
- BFS
- ์ํ
- ๊ต์ฌ
- Java
- ๋๋น ์ฐ์ ํ์
- ๊น์ด ์ฐ์ ํ์
- dfs
- ๋ฌธ์์ด
- ๊ตฌํ
- PGM
- queue
- Python
- Dynamic Programming
- ๊ทธ๋ํ ์ด๋ก
- ์ ์๋ก
- Brute Force Algorithm
- ๊ทธ๋ํ ํ์
- LV2
- DP
- greedy
- ์ ๋ ฌ
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_1854 : K๋ฒ์งธ ์ต๋จ๊ฒฝ๋ก ์ฐพ๊ธฐ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- 1๋ฒ ๋์๋ถํฐ ๋ค๋ฅธ ๋์๋ก ๊ฐ๋ K๋ฒ์งธ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํด์ผ ํ๋ค.
- K๋ฒ์งธ ์ต๋จ ๊ฒฝ๋ก๊ฐ ์์ผ๋ฉด -1 ์ถ๋ ฅํ๋ค.
๐ธ ๋ฌธ์ ํ์ด ๐ธ
- ํ ๋ ธ๋๋ถํฐ ๋ค๋ฅธ ๋ ธ๋๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ฏ๋ก, ๋ค์ต์คํธ๋ผ (Dijkstra) ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๋ค.
- ์ผ๋ฐ์ ์ธ ๋ค์ต์คํธ๋ผ์ ๋ค๋ฅด๊ฒ, ๊ฑฐ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธ์ดํธ ํ์ง ์๊ณ ์ฐ์ ์์ ํ์ ๋ค์ ๋ฃ๋๋ค.
- ๋ฌดํ ์ํ ํน์ ๋๋ฌด ๋ง์ ์์๊ฐ ์๊ธฐ์ง ์๋๋ก, K๊ฐ ๊น์ง๋ง ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.PriorityQueue;
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();
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
ArrayList<ArrayList<int[]>> adjList = new ArrayList<>();
ArrayList<ArrayList<Integer>> dist = new ArrayList<>();
for (int i = 0; i <= n; i++) {
adjList.add(new ArrayList<>());
dist.add(new ArrayList<>());
}
for (int i = 0; i < m; i++) {
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
adjList.get(a).add(new int[]{b, c});
}
PriorityQueue<int[]> pq = new PriorityQueue<>(Comparator.comparingInt(a -> a[1]));
pq.offer(new int[]{1, 0});
while (!pq.isEmpty()) {
int[] now = pq.poll();
if (dist.get(now[0]).size() >= k) {
continue;
}
dist.get(now[0]).add(now[1]);
for (int[] a : adjList.get(now[0])) {
pq.offer(new int[]{a[0], now[1] + a[1]});
}
}
for (int i = 1; i <= n; i++) {
if (dist.get(i).size() < k) {
sb.append(-1).append('\n');
} else {
sb.append(dist.get(i).get(k - 1)).append('\n');
}
}
bw.write(sb.toString());
bw.flush();
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ๊ฐ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ์ธ์ ๋ฆฌ์คํธ adjList๋ฅผ ์ฌ์ฉํ๋ค.
- K๊ฐ์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ฆฌ์คํธ dist๋ฅผ ์ฌ์ฉํ๋ค.
- ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฌธ ์ฒดํฌ ๋์ , ์ต๋จ ๊ฒฝ๋ก์ ๊ฐ์๊ฐ K๊ฐ๊ฐ ๋์ง ์์ ๋ ๊น์ง ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค.
๐ธ end ๐ธ
- ํ๋ ํฐ๋ ๋ฌธ์ ๋ผ๊ณ ๋ง์ด ๊ฑฑ์ ํ๋๋ฐ, ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์กฐ๊ธ๋ง ๋ณํํ๋ฉด ๋๋ค๋ ์์ด๋์ด๊ฐ ๋ ์ค๋ฅธ๋ค๋ฉด ๊ธ๋ฐฉ ํ๋ฆฌ๋ ๋ฌธ์ ์๋ค.
- ๋๋ ์ฐ์ ์์ ํ์์ ๋์ค๋ ๊ฑฐ๋ฆฌ๊ฐ ํด๋น ๋
ธ๋๊น์ง ๊ฐ๋ 'ํ์ฌ์ ์ต๋จ๊ฑฐ๋ฆฌ'๋ก ์๊ฐํ๊ณ ํ์ดํ๋๋ฐ, ์ด๊ฒ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ํ์คํ ๋ณด์ฅํ๋์ง๋ ์๋ฌธ์ด๋ค. (๋ฐฑ์ค ๊ฒ์ํ์ ์ง๋ฌธ์ ๋จ๊ฒจ๋จ๋ค.)
- ๋ค๋ฅธ ํ์ด๋ก dist๋ฅผ ๊ทธ๋ฅ ArrayList๊ฐ ์๋ ์ฐ์ ์์ ํ์ ๋ฐฐ์ด๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ๋ ์์๋ค. ์ด ๊ฒฝ์ฐ์ ํ์คํ K๋ฒ์งธ ๊ฑฐ๋ฆฌ๋ฅผ ๋ณด์ฅํ๋ค.
- ์ฝ๋๋ฅผ ๋ค๋ฌ์ผ๋ฉฐ ์ฌ๋ฌ๋ฒ ์ ์ถํ๋๋ฐ, ์๊ณ ๋ฆฌ์ฆ์ด ๊ฐ์ผ๋ ์๊ฐ์ด๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋น์ทํ๋ค. ๊ทผ์ํ ์์น ์ฐจ์ด๋ ๊ทธ๋ฅ ์๋ฒ ์ํ์ ์ฐจ์ด์ธ ๊ฒ ๊ฐ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_28470 : ์ฅ~๋นก! ๋นก~์ฅ! (0) | 2024.11.26 |
---|---|
BOJ_11068 : ํ๋ฌธ์ธ ์ (0) | 2024.11.25 |
BOJ_1948 : ์๊ณ๊ฒฝ๋ก (0) | 2024.09.12 |
BOJ_1516 : ๊ฒ์ ๊ฐ๋ฐ (0) | 2024.09.12 |
BOJ_1113 : ์์์ฅ ๋ง๋ค๊ธฐ (0) | 2024.08.20 |