프로그래머스 행렬 테두리 회전하기 JAVA

sundays·2022년 9월 26일

문제

행렬 테두리 회전하기

풀이

모든 경우의 수를 전부다 직접 해보면 되는 브루트포스 문제이다
이렇게 길게 나오는게 맞는건지 궁금해서 소스코드를 검색해봤는데 정말 어떻게 하면 더 단순하고 좋은 코드가 나올 수 있는지 항상 고민이 된다..

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;

지도를 돌리는 문제는 간간히 출제되는 문제 같다 저번에도 어디서 본적있는거 같은데
예외처리에 항상 주의해야 한다.

전체 코드

전체 코드

profile
develop life

0개의 댓글