본문 바로가기
TIL - 프로그래밍/Python 알고리즘

[SWEA] 1961. 숫자 배열 회전 - Python

by chaemj97 2022. 2. 21.
728x90

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Pq-OKAVYDFAUq 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

< 📝 문제 >
N x N 행렬이 주어질 때,

시계 방향으로 90도, 180도, 270도 회전한 모양을 출력하라.

< ❓ 생각 >
1.

2.

90도 회전 + 90도 회전 = 180도 회전


< 💻 코드 >

1.

# 테스트 케이스 개수
T = int(input())
for tc in range(1,T+1):
    # N*N 행렬
    N = int(input())
    arr1 = [list(map(str,input().split())) for _ in range(N)]
    # 90도 회전
    arr2 = [[0]*N for _ in range(N)]
    # 180도 회전
    arr3 = [[0] * N for _ in range(N)]
    # 270도 회전
    arr4 = [[0] * N for _ in range(N)]

    for i in range(N):
        for j in range(N):
            arr2[i][j] = arr1[N-1-j][i]
            arr3[i][j] = arr1[N-1-i][N-1-j]
            arr4[i][j] = arr1[j][N-1-i]
    print(f'#{tc}')
    for a1,a2,a3 in zip(arr2,arr3,arr4):
        a11 = ''.join(a1)
        a22 = ''.join(a2)
        a33 = ''.join(a3)
        print(a11,a22,a33)

2.

#90도 회전
def degree_90(arr):
    result = [[0] * N for _ in range(N)]
    for i in range(N):
        for j in range(N):
            result[i][j] = arr[N-1-j][i]
    return result

# 테스트 케이스 개수
T = int(input())
for tc in range(1,T+1):
    # N*N 행렬
    N = int(input())
    arr = [list(map(str,input().split())) for _ in range(N)]

    # 90도 회전
    arr2 = degree_90(arr)
    # 90도 회전 + 90도 회전 = 180도 회전
    arr3 = degree_90(arr2)
    # 90도 회전 + 90도 회전 + 90도 회전 = 70도 회전
    arr4 = degree_90(arr3)
    print(f'#{tc}')
    for a,b,c in zip(arr2,arr3,arr4):
        a1 = ''.join(a)
        b1 = ''.join(b)
        c1 = ''.join(c)
        print(a1,b1,c1)


< ❗ >

인덱스 활용!!!

728x90
반응형

댓글