For Programmer

SWEA 1961 파이썬 문제풀이(숫자 배열 회전) 본문

코팅테스트/백준 문제 모음

SWEA 1961 파이썬 문제풀이(숫자 배열 회전)

유지광이 2022. 2. 8. 23:07
728x90

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

 

SW Expert Academy

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

swexpertacademy.com

 


이문제는 회전시킨 행렬들을 무지성 반복문을 돌아 구하 거나 혹은 zip함수를 쓰면 쉽게 구할 수 있다.

 

1. zip풀이

def solution(order, array):
    result = []  # 회전시킨 행렬들을 담을 리스트
    temp_list_90 = list(map(list, zip(*array[::-1])))
    result.append(temp_list_90)
    temp_list2_180 = list(map(list, zip(*temp_list_90[::-1])))
    result.append(temp_list2_180)
    temp_list3_270 = list(map(list, zip(*temp_list2_180[::-1])))
    result.append(temp_list3_270)

    # 회전시킨 리스트들을 출력하기위해 열과 행을 바꾸어 준다.(전치)
    result = list(map(list, zip(*result)))

    print(f'#{order}')
    for i in result:
        for j in i:
            print("".join(map(str, j)), end=" ")
        print()


T = int(input())

for order in range(1, T + 1):
    N = int(input())
    array = [list(map(int, input().split())) for _ in range(N)]

    solution(order, array)

 

2. 반복문 돌기

T = int(input())


def solution(order, array, N):
    result = []
    for i in range(N):
        b = ""
        for j in range(N - 1, -1, -1):
            b += str(array[j][i])
        result.append(b)

    for i in range(N - 1, -1, -1):
        b = ""
        for j in range(N - 1, -1, -1):
            b += str(array[i][j])
        result.append(b)

    for i in range(N - 1, -1, -1):
        b = ""
        for j in range(N):
            b += str(array[j][i])
        result.append(b)

    print(f'#{order}')
    for i in range(N):
        for j in range(i, N * 3, N):
            print(result[j], end=" ")
        print()


for order in range(1, T + 1):
    N = int(input())
    array = [list(map(int, input().split())) for _ in range(N)]

    solution(order, array, N)

 

 

728x90
Comments