본문으로 바로가기

 SW Expert Academy 1961. 숫자 배열 회전

문제에서는 N * N 행렬이 주어질 때, 시계 방향으로 90도, 180도, 270도 회전한 모양을 출력해야 한다.

삼성 SW Expert Academy에서 푼 문제 리스트 보기

github에서 코드 보기


문제 풀이

문제 자체는 어렵지 않다. 파이썬의 zip 함수를 사용한다면 문제를 쉽게 풀 수 있다.

matrix  = [[ 1, 2, 3],

4, 5, 6],

                  [7, 8, 9]]

matrix에 zip 함수를 사용해보면 다음과 같이 튜플 형태로 반환된다. 

각 줄별로 index가 같은 값들을 가져와 새로운 배열을 만들어 준다. 

zip_matrix = list(zip(*matrix))

print(zip_matrix )

[(1, 4, 7),

 (2, 5, 8),

 (3, 6, 9)]

파이썬 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
def solve(case, n, rotation_map):
    result = [[] for i in range(n)]
    # 총 3번 회전한다
    for count in range(3):
        new_map = []
        index = 0
        for z in zip(*rotation_map):
            new_map.append(list(reversed(z)))
            result[index].append(''.join(list(reversed(z))))
            index += 1
        rotation_map = new_map
 
    print('#{0}'.format(case))
    for w in result:
        print(' '.join(w))
 
if __name__ == "__main__":
    t = int(input())
 
    for i in range(t):
        lines = []
        n = int(input())
        for j in range(n):
            line = list(map(str, input().strip().split()))
            lines.append(line)
        solve(i + 1, n, lines)
 
cs

#SW Expert Academy 1961. 숫자 배열 회전 #1961. 숫자 배열 회전 #python 1961. 숫자 배열 회전 #1961. 숫자 배열 회전 python #1961 숫자 배열 회전 #1961 숫자 배열 회전 python #파이썬 1961 숫자 배열 회전 #줄기세포 배양 문제 #1961. 숫자 배열 회전 #python으로 푸는 1961 숫자 배열 회전