알고리즘 문제풀이

Swea D2_1961. 숫자 배열 회전 Python

아크몽 2024. 2. 18. 03:27

풀이 포인트

1. 90도 씩 호출하는 것
2. 90도 짜리 구하기 -> 90도 돌린 배열을 90도씩 2번 돌리기

90도 돌린것 구하는데 너무 오래시간을 소모함...

T = int(input())
for tc in range(1,T+1):
    N = int(input())
    arr = [list(map(str,input().split())) for _ in range(N)]
    arr90 = [[0] * N for _ in range(N)]
    arr180 = [[0] * N for _ in range(N)]
    arr270 = [[0] * N for _ in range(N)]

    # 90 도
    for i in range(N):
        for j in range(N):
            arr90[j][N-1-i] = arr[i][j]
    # 180 도
    for i in range(N):
        for j in range(N):
            arr180[j][N - 1 - i] = arr90[i][j]
    # 270 도
    for i in range(N):
        for j in range(N):
            arr270[j][N - 1 - i] = arr180[i][j]
    print(f'#{tc}')
    for i in range(N):
        print(''.join(arr90[i]),''.join(arr180[i]),''.join(arr270[i]))

개선할 수 있는 점

1. zip 함수 사용할 수도 있음

for a,b,c in zip(arr2,arr3,arr4):
        a1 = ''.join(a)
        b1 = ''.join(b)
        c1 = ''.join(c)
        print(a1,b1,c1)

2. 같은것을 반복 => 함수사용

def degree90(arr):
    arr90 = [[0] * N for _ in range(N)]
    for i in range(N):
        for j in range(N):
            arr90[i][j] = arr[N-1-j][i]
    return arr90