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

sundays·2022년 9월 26일
0

문제

행렬 테두리 회전하기

풀이

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

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개의 댓글