모든 경우의 수를 전부다 직접 해보면 되는 브루트포스 문제이다
이렇게 길게 나오는게 맞는건지 궁금해서 소스코드를 검색해봤는데 정말 어떻게 하면 더 단순하고 좋은 코드가 나올 수 있는지 항상 고민이 된다..
for (int j = x1 + 1; j <= x2; j++) {
minNumber = Math.min(minNumber, map[j][y1]);
map[j - 1][y1] = map[j][y1];
}
for (int j = y1 + 1; j <= y2; j++) {
minNumber = Math.min(minNumber, map[x2][j]);
map[x2][j - 1] = map[x2][j];
}
for (int j = x2 - 1; j >= x1; j--) {
minNumber = Math.min(minNumber, map[j][y2]);
map[j + 1][y2] = map[j][y2];
}
for (int j = y2 - 1; j > y1; j--) {
minNumber = Math.min(minNumber, map[x1][j]);
map[x1][j + 1] = map[x1][j];
}
이 부분이 값을 시계방향 으로 돌려주는 부분인데 마지막 부분의 for문은 끝까지 포함하지 않는다. 왜냐하면 처음에 저장해 놓은 map시작점을 수동으로 넣어줄 것이기 때문이다
map[x1][c1 + 1] = tmp;
지도를 돌리는 문제는 간간히 출제되는 문제 같다 저번에도 어디서 본적있는거 같은데
예외처리에 항상 주의해야 한다.