1961. 숫자 배열 회전
✏️ 문제 풀이
- matrix는 N x N 크기의 2차원 리스트로 저장됨
- 90도 시계 방향으로 회전할 때, 원본 행렬의 (i, j) 위치의 값은 회전된 행렬에서 (j, N-1-i) 위치로 이동
ex) 인덱스 매핑 - 3 x 3 행렬에서 0번째 행의 각 요소가 새로운 위치로 이동
1) N = 3, i = 0, j = 0
(0, 0)의 값 1 → (0, 2)로 이동
[N-1-j][i] = [3-1-0][0] = [2][0]
2) N = 3, i = 0, j = 1
(0, 1)의 값 2 → (1, 2)로 이동
[N-1-j][i] = [3-1-1][0] = [1][0]
3) N = 3, i = 0, j = 2
(0, 2)의 값 3 → (2, 2)로 이동
[N-1-j][i] = [3-1-2][0] = [0][0]
- 각 행의 원소를 출력할 때, end=''를 사용하여 원소 사이에 공백 없이 이어서 출력하고, 각 회전된 행렬 사이에 공백 추가
- print()를 호출하여 아무 인자 없이 호출하면 줄바꿈 발생 → 각 행의 출력이 끝난 후에 호출되므로, 다음 행으로 넘어감.
T = int(input())
for tc in range(1, T+1):
N = int(input())
# N x N 행렬
matrix = [list(map(int, input().split())) for _ in range(N)]
# 회전한 행렬 초기화
rotate_90 = [[0 for _ in range(N)] for _ in range(N)]
rotate_180 = [[0 for _ in range(N)] for _ in range(N)]
rotate_270 = [[0 for _ in range(N)] for _ in range(N)]
# 90도 회전
for i in range(N):
for j in range(N):
rotate_90[i][j] = matrix[N-1-j][i]
# 180도 회전
for i in range(N):
for j in range(N):
rotate_180[i][j] = rotate_90[N-1-j][i]
# 270도 회전
for i in range(N):
for j in range(N):
rotate_270[i][j] = rotate_180[N-1-j][i]
print(f"#{tc}")
for i in range(N):
for a in range(N):
print(rotate_90[i][a], end = '')
print(end = ' ')
for b in range(N):
print(rotate_180[i][b], end = '')
print(end = ' ')
for c in range(N):
print(rotate_270[i][c], end = '')
print()
'코딩테스트 > SW Expert Academy' 카테고리의 다른 글
[D2] 1984. 중간 평균값 구하기 (0) | 2024.10.08 |
---|---|
[D2] 1986. 지그재그 숫자 (0) | 2024.10.07 |
[D2] 1989. 초심자의 회문 검사 (0) | 2024.10.07 |
[D2] 1284. 수도 요금 경쟁 (0) | 2024.10.06 |
[D2] 2007. 패턴 마디의 길이 (0) | 2024.10.06 |