https://www.acmicpc.net/problem/4485
4485번: 녹색 옷 입은 애가 젤다지?
젤다의 전설 게임에서 화폐의 단위는 루피(rupee)다. 그런데 간혹 '도둑루피'라 불리는 검정색 루피도 존재하는데, 이걸 획득하면 오히려 소지한 루피가 감소하게 된다! 젤다의 전설 시리즈의 주
www.acmicpc.net
문제
코드
import java.io.*;
import java.util.*;
public class Main {
static class Node implements Comparable<Node> {
int x;
int y;
int cost;
public Node(int x, int y, int cost) {
this.x = x;
this.y = y;
this.cost = cost;
}
@Override
public int compareTo(Node o) {
return this.cost - o.cost;
}
}
private static final BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
private static int dX[] = {-1, 1, 0, 0};
private static int dY[] = {0, 0, -1, 1};
private static boolean visited[][];
private static int map[][];
private static int size[][];
private static final int INF = Integer.MAX_VALUE;
private static int n, nX, nY;
public static void main(String[] args) throws IOException {
StringBuilder sb = new StringBuilder();
StringTokenizer st;
int cnt = 1;
while(true) {
n = Integer.parseInt(bf.readLine());
if(n == 0) break;
map = new int[n][n];
visited = new boolean[n][n];
size = new int[n][n];
for(int i = 0 ; i < n ; i++) {
st = new StringTokenizer(bf.readLine());
for(int j = 0 ; j < n ; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
size[i][j] = INF;
}
}
BFS(0, 0, map[0][0]);
bw.write("Problem " + cnt + ": " + size[n - 1][n - 1] + "\n");
cnt++;
}
bf.close();
bw.flush();
bw.close();
}
private static void BFS(int x, int y, int roopy) {
PriorityQueue<Node> Q = new PriorityQueue<>();
visited[x][y] = true;
Q.offer(new Node(x, y, roopy));
while(!Q.isEmpty()) {
Node node = Q.poll();
for(int i = 0 ; i < 4 ; i++) {
nX = node.x + dX[i];
nY = node.y + dY[i];
if(isValid() && !visited[nX][nY] && size[nX][nY] > (map[nX][nY] + node.cost)) {
size[nX][nY] = map[nX][nY] + node.cost;
visited[nX][nY] = true;
Q.offer(new Node(nX, nY, size[nX][nY]));
}
}
}
}
private static boolean isValid() {
return (nX >= 0 && nY >= 0 && nX < n && nY < n);
}
}
'코딩테스트' 카테고리의 다른 글
[백준] 1034번 '램프' - Java (0) | 2023.08.15 |
---|---|
[백준] 7569번 '토마토' - Java (1) | 2023.08.13 |
[백준] 2493번 '탑' - Java (1) | 2023.08.11 |
[백준] 1041번 '주사위' - Java (0) | 2023.08.10 |
[백준] 5972번 '택배 배송' - Java (0) | 2023.08.09 |