SWEA 1961. 숫자 배열 회전(파이썬)

비만다람쥐·2024년 4월 30일
0
post-custom-banner

문제

문제바로가기

1.N*N 행렬이 주어질 때, 시계 방향으로 90도 180도 270도 회전한 모양을 출력하여라

접근하기

1.처음에 숫자로만 접근을 하려고 해서 접근을 쉽게 하지 못하였다
2.숫자값으로만 판단하면 헷갈릴 수 가 있으므로 회전이나 반전 같은 문제는 값이 아닌 좌표를 기준으로 풀어야한다
3.원래있던 배열내용을 목적지에 정리하는것으로 좌표를 설정해야한다
4.출력에도 .join함수를 사용해준다

"".join(리스트) 함수란 매개변수로 들어온 리스트에 있는 요소 하나하나를 합쳐서 하나의 문자열로 변환하는 함수이다
join함수는 기본적으로 문자열로 이루어진 리스트만 가능하므로 int리스트는 map를 사용해 해결해줘야한다

풀이

#기존 행렬을 90도회전 그리고 그 90도회전한것을 180도회전.... 반복해야하므로 함수로 만들어준다
def sol(arr):
    Aarr = [[0]*n for _ in range(n)]
    for i in range(n):
        for j in range(n):
            Aarr[i][j] = arr[n-1-j][i]
    return Aarr

T = int(input())

for t in range(1,T+1):
    n = int(input())
    arr = [list(map(int,input().split())) for _ in range(n)]
    
    arr90 = sol(arr)
    arr180 = sol(arr90)
    arr270 = sol(arr180)

    print(f'#{t}')
    for a,b,c in zip(arr90,arr180,arr270):
        print(f'{"".join(map(str,a))} {"".join(map(str,b))} {"".join(map(str,c))}
profile
개발자가 되고싶은 사람
post-custom-banner

0개의 댓글