[Python] 시계방향, 반시계방향 90도 회전

yoonene·2022년 10월 15일
0

알고리즘

목록 보기
23/62

다음과 같은 배열을 90도 회전하는 간단한 방법을 알아보자.

arr = [[1, 2, 3, 4], [7, 8, 9, 10], [13, 14, 15, 16], [19, 20, 21, 22]]

시계방향 90도 회전

1. zip 활용

1) *arr[::-1] 에서 list들 순서 뒤집고
2) zip으로 각 원소 리스트의 인덱스별로 tuple을 만들고
3) 이 tuple 원소들을 list로 바꾸기 위해 map을 사용하고
4) 마지막에 list 씌워주기 위해 list 감싼다.

A = list(map(list, zip(*arr[::-1])))
# [[19, 13, 7, 1], [20, 14, 8, 2], [21, 15, 9, 3], [22, 16, 10, 4]]

2. 반복문 활용

for c in range(m):
    for r in range(n):
        temp[c][r] = arr[n-1-r][c]

반시계방향 90도 회전

1. zip 활용

1) 기존 arr의 원소 리스트 순서는 그대로
2) 각 원소 리스트의 인덱스별로 tuple만들고
3) map으로 list 만들고
4) list 씌워주고
5) 뒤에서부터 가져온다.

B = list(map(list, zip(*arr)))[::-1]
# [[4, 10, 16, 22], [3, 9, 15, 21], [2, 8, 14, 20], [1, 7, 13, 19]]

2. 반복문 활용

for c in range(m):
    for r in range(n):
        temp[c][r] = arr[r][m-1-c]
        ```
profile
NLP Researcher / Information Retrieval / Search

0개의 댓글