코딩테스트/SW Expert Academy / / 2024. 10. 7. 09:57

[D2] 1961. 숫자 배열 회전

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()

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유