Notice
Recent Posts
Recent Comments
Link
뮁이의 개발새발
[JAVA] 백준 4485 녹색 옷 입은 애가 젤다지? (다익스트라) 본문
문제 너무 웃김ㅋㅋㅋ 영원히 고통받는 링크 ..
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class bj4485 {
static class node implements Comparable<node> {
int x;
int y;
int rupee;
public node(int x, int y, int rupee) {
super();
this.x = x;
this.y = y;
this.rupee = rupee;
}
@Override
public int compareTo(node n) {
return this.rupee < n.rupee ? -1 : 1;
}
}
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// 상하좌우
int[] dx = { 0, 0, -1, 1 };
int[] dy = { -1, 1, 0, 0 };
int tc = 0;
while (true) {
tc++;
int N = Integer.parseInt(in.readLine());
if (N == 0) {
break;
}
int[][] map = new int[N][N];
int[][] cost = new int[N][N];
StringTokenizer st = null;
for (int i = 0; i < N; i++) {
st = new StringTokenizer(in.readLine());
for (int j = 0; j < N; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
cost[i][j] = Integer.MAX_VALUE;
}
}
PriorityQueue<node> queue = new PriorityQueue<>();
cost[0][0] = map[0][0];
queue.add(new node(0, 0, map[0][0]));
while (!queue.isEmpty()) {
// a단계 : 방문하지 않은 정점들 중 최소가중치의 정점 선택
node tmpnode = queue.poll();
int tempx = tmpnode.x;
int tempy = tmpnode.y;
// b단계: current정점을 경유지로 하여 갈수 있는 다른 방문하지 않은 정점들에 대한 처리
for (int i = 0; i < 4; i++) {
int x = tempx + dx[i];
int y = tempy + dy[i];
if (x == -1 || y == -1 || x == N || y == N) {
continue;
}
if (cost[y][x] > cost[tempy][tempx] + map[y][x]) { // 기존의 가중치보다 작은 경우
cost[y][x] = cost[tempy][tempx] + map[y][x]; // 가중치를 교환
queue.offer(new node(x, y, cost[y][x])); // 큐에 추가
}
}
}
sb.append("Problem " + tc + ": " + cost[N - 1][N - 1] + "\n");
}
System.out.println(sb);
}
}
'Algorithm' 카테고리의 다른 글
[JAVA] 프로그래머스 로또의 최고 순위와 최저 순위 (0) | 2021.10.04 |
---|---|
[JAVA] SWEA 1249 보급로 (0) | 2021.09.30 |
[JAVA] 백준 1755번 숫자놀이 (0) | 2021.09.27 |
[JAVA] 백준 17070 파이프 옮기기1 (DFS) (0) | 2021.09.25 |
[JAVA] 백준 7576 토마토 (BFS) (0) | 2021.09.24 |
Comments