<aside> 💬 lv1, 행렬

행렬 90도 회전하기

문제 설명

N x N 크기의 정사각형 행렬이 주어집니다. 이 행렬을 90도 시계 방향으로 회전한 결과를 반환하는 코드를 작성해주세요.


제한 사항


입출력 예

입력 (행렬) 출력 (90도 회전한 행렬)
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] [[7, 4, 1], [8, 5, 2], [9, 6, 3]]
[[1, 2], [3, 4]] [[3, 1], [4, 2]]

입출력 설명

주어진 행렬을 90도 시계 방향으로 회전시켜서 결과를 반환합니다.

</aside>

😺 풀이 1. zip() 함수

def solution(matrix):
    if not matrix or len(matrix) != len(matrix[0]): **#1 행렬의 길이 검사**
        return "Error"
    return [list(reversed(col)) for col in zip(*matrix)] **#2 리스트 컴프리헨션으로 결과 반환**

단계별 풀이 전략

  1. 행렬의 길이 검사

    len(matrix): 행, len(matrix[0]): 열

    만약 행과 열의 길이가 같지 않다면 "Error"를 반환한다.

  2. 리스트 컴프리헨션으로 결과 반환

    1. 먼저 zip(*matrix)로 같은 열의 요소끼리 튜플로 묶어준다. → [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
    2. 이 리스트를 col이라는 이름으로 순회한다.
    3. col튜플을 reversed를 통해 뒤집고 리스트로 변환해준다.
    4. 변환된 reversed(col)들을 리스트로 묶어 반환.(리스트 컴프리헨션)

알아둬야 할 개념

함수 zip()

함수 reversed()