n × n 정수 행렬 matrix가 주어져요. 시계 방향으로 90도 돌린 행렬을 반환해요.
인덱스를 한 번에 옮기려 하면 헷갈려요. 전치한 뒤 각 행을 뒤집는다로 나누면 두 단계 모두 실수할 여지가 거의 없어요. 전치는 (i, j) 와 (j, i) 를 맞바꾸는 것이고, 그 다음 각 행을 뒤집으면 시계 방향 회전이 돼요.
어려운 문제를 아는 조각으로 쪼개는 연습이에요. 반시계 방향이 필요하면 순서를 바꿔 각 행을 먼저 뒤집고 전치하면 돼요.
예시
예시 1
예시 2
예시 3
제한 사항
- 1 ≤ n ≤ 200
- -10^6 ≤ matrix[i][j] ≤ 10^6
- 행과 열의 개수는 같아요.
새 행렬을 하나 만들어
out[j][n - 1 - i] = matrix[i][j] 로 옮겨도 돼요. 제자리에서 하려면 전치 후 각 행 뒤집기가 가장 헷갈리지 않아요. 전치할 때는 j를 i + 1부터 돌아야 두 번 바꿔 제자리로 돌아오지 않아요.javascriptCopy codefunction rotateMatrix(matrix) {const n = matrix.length;const out = matrix.map((row) => row.slice());for (let i = 0; i < n; i++) {for (let j = i + 1; j < n; j++) {const tmp = out[i][j];out[i][j] = out[j][i];out[j][i] = tmp;}}for (const row of out) row.reverse();return out;}
예시 테스트만 실행 (Cmd/Ctrl+Enter)
숨김 테스트까지 채점 (Cmd/Ctrl+Shift+Enter)
에디터를 불러오고 있어요…
코드를 작성하고Ctrl↵를 눌러 예시 테스트를 확인해 보세요.