코딩가딩가딩/알통
[BOJ] 3955 탈출 (Java)
worldforest
2021. 1. 2. 15:22
BOJ 3055 탈출 JAVA
💡 how
물, 고슴도치 큐를 만들어서 물 먼저 사방탐색하고 그 다음에 고슴도치 이동!
메모리 초과 나서 다시 풀어야된다..
int answer = 1;
while (true) {
if (hedghog.size() == 0) {
System.out.println("KAKTUS");
return;
}
waterGo();
if (hedghogGo()) {
System.out.println(answer);
return;
}
answer++;
}
private static void waterGo() {
int size = water.size();
for (int s = 0; s < size; s++) {
RC current = water.poll();
for (int dir = 0; dir < 4; dir++) {
int newR = current.r + dirs[dir][0];
int newC = current.c + dirs[dir][1];
if (!canGo(newR, newC))
continue;
if (map[newR][newC] == 0) {
map[newR][newC] = -1;
water.add(new RC(newR, newC));
}
}
}
}
private static boolean hedghogGo() {
int size = hedghog.size();
for (int s = 0; s < size; s++) {
RC current = hedghog.poll();
for (int dir = 0; dir < 4; dir++) {
int newR = current.r + dirs[dir][0];
int newC = current.c + dirs[dir][1];
if (!canGo(newR, newC))
continue;
if (map[newR][newC] == 2) {
hedghog.add(new RC(newR, newC));
return true;
}
if (map[newR][newC] == 0) {
hedghog.add(new RC(newR, newC));
}
}
}
return false;
}
private static boolean canGo(int r, int c) {
if (r >= 0 && c >= 0 && r < R && c < C) {
return true;
}
return false;
}
반응형