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;
}
반응형
'코딩가딩가딩 > 알통' 카테고리의 다른 글
BOJ 2164 카드 (C++) (0) | 2021.01.06 |
---|---|
순열과 조합 (0) | 2020.08.28 |
[알통] 백트래킹, 시뮬레이션 (0) | 2020.08.27 |
[재귀] 분할정복 문제 풀기 (0) | 2020.08.26 |
[flood fill]두더지 굴 bfs/dfs 기본 문제 (0) | 2020.08.25 |
댓글