๋ฐ์ํ
๋ฌธ์ (Gold 5)
https://www.acmicpc.net/problem/13549
ํ์ด
์ฒ์์ ๋จ์ํ BFS ( 1์ฐจ์ ๋ฐฐ์ด ํ์ ) ์ผ๋ก ํ์๋๋ ๋น์ฐํ! ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ๋ค.
๊ทธ๋์ ๋ฐฉ๋ฌธํ๋ ์ธ๋ฑ์ค๋ง๋ค์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ!
์ฝ๋
๋๋ณด๊ธฐ
package shortestPath;
import java.util.*;
import java.io.*;
public class Main_13549_์จ๋ฐ๊ผญ์ง3{
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
System.out.println(dijkstra(N, K));;
}
private static int dijkstra(int n, int k) {
PriorityQueue<int[]> q = new PriorityQueue<>(((o1, o2) -> Integer.compare(o1[1], o2[1])));
int[] dist = new int[100001];
Arrays.fill(dist, Integer.MAX_VALUE);
q.offer(new int[]{n, 0});
dist[n] = 0;
while (!q.isEmpty()){
int[] cur = q.poll();
if(dist[cur[0]] < cur[1]) continue;
if(cur[0] == k){
break;
}
int[] ni = new int[]{cur[0]-1, cur[0]+1, cur[0]*2}; // ๊ฐ ์ ์๋ ์ธ๋ฑ์ค
for(int i =0 ; i < 3; i++){
if(0<=ni[i]&&ni[i]<100001){
int sec = (i == 0 || i == 1)? 1:0; // *2 ๋ ์๊ฐ์ด๋์ด๋ฏ๋ก ์๊ฐ์ด ์ถ๊ฐ๋์ง ์์
if(dist[ni[i]] > dist[cur[0]] + sec){
q.offer(new int[]{ni[i], dist[cur[0]] + sec});
dist[ni[i]] = dist[cur[0]] + sec;
}
}
}
}
return dist[k];
}
}
์ ์ถ
์ค๋๋ ๊ฑธ๋ ธ๋ค,,,, 7ํธ๋ง์ ์ฑ๊ณต!!!!!!!!
๋ฐ์ํ
'๐ ์๊ณ ๋ฆฌ์ฆ > ShortestPath' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[LeetCode] 1091. Shortest Path in Binary Matrix (ํด์, Kotlin ํ์ด) (0) | 2023.06.19 |
---|---|
[๋ฐฑ์ค] 1238๋ฒ: ํํฐ (JAVA) (0) | 2022.04.03 |
[๋ฐฑ์ค]11780๋ฒ ํ๋ก์ด๋2 (Java) (0) | 2022.02.21 |
[๋ฐฑ์ค] 16118๋ฒ ๋ฌ๋น์ฌ์ฐ (Java) (0) | 2022.02.08 |
[๋ฐฑ์ค] 1753๋ฒ ์ต๋จ๊ฒฝ๋ก (Java) (0) | 2021.08.24 |