회전하면 행과 열의 개수가 바뀌어요
앞 레슨에서 행 합을 읽었어요. 이번에는 좌표가 바뀐 새 격자를 만들어요. 2행 3열을 오른쪽으로 90도 돌리면 3행 2열이에요. 새 격자 크기를 원래 크기 그대로 쓰면 직사각형에서 값이 들어갈 자리가 맞지 않아요.
원본의 첫 행은 회전 뒤 오른쪽 열로, 마지막 행은 왼쪽 열로 옮겨져요. 원본 값은 유지하고 도착 좌표만 바꿔요.
값 한 개의 도착지를 손으로 확인해요
원본 {{1,2,3},{4,5,6}}의 오른쪽 회전은 {{4,1},{5,2},{6,3}}이에요.
| 원본 좌표 | 값 | 회전 뒤 좌표 |
|---|---|---|
| (0,0) | 1 | (0,1) |
| (0,2) | 3 | (2,1) |
| (1,0) | 4 | (0,0) |
원본 마지막 행의 값은 새 열 번호 0으로 가요. 행 번호만 열 번호로 바꾸면 오른쪽 회전이 아니라 전치가 돼요. 직사각형에서도 같은 이동 관계를 만족하는지 확인해요.
직접 풀어봐요
grid를 오른쪽으로 90도 한 번 회전한 새 격자를 반환해요. 제공 함수에서 값의 도착 좌표를 정하는 잘못된 한 줄을 수정해요.
행·열 수는 각각 18이고 모든 행의 길이는 같아요. 원소는 −10001000이에요. 실행용 입력은 첫 줄 rows cols, 다음 rows줄에 cols개 원소예요. 출력은 회전 뒤의 cols행에 각각 rows개 값을 공백으로 구분해요. main은 반환 격자를 출력하는 실행용 코드예요.
예시 1: grid={{1,2},{3,4}} → [[3,1],[4,2]]. 왼쪽 아래 3이 회전 뒤 왼쪽 위로 옮겨져요.
예시 2: grid={{1,2,3},{4,5,6}} → [[4,1],[5,2],[6,3]]. 2×3이 3×2가 돼요.
예시 입력
2 2 1 2 3 4
예상 결과
3 1 4 2
예시 입력
2 3 1 2 3 4 5 6
예상 결과
4 1 5 2 6 3
핵심 개념
array-2d: 회전 뒤 크기와 각 값의 도착 좌표를 맞춰요.