본문 바로가기

파이썬

Python으로 2D Array rotaton 하기

알고리즘 문제를 풀 때 2차원 배열의 회전 (2D Array rotation)이 필요할 때가 있다

만약 python으로 문제를 푼다면 다음과 같이 해보자

rotation = list(zip(*origin[::-1]))
'''
예시
origin = [[1, 2, 3],
          [4, 5, 6],
          [7, 8, 9]]
          
rotation = [(7, 4, 1), 
            (8, 5, 2), 
            (9, 6, 3)]
'''

 

원리는 다음과 같다

1. origin[ : : -1 ]
    origin list의 element 를 역순으로 가져온 list

2. zip(*origin[ : : -1 ] )
    zip return : tuple의 iterator, i번째 tuple은 인자로 전달된 list의 i번 째 요소들의 집합.

3. list(zip(*origin[ : : -1 ] ))
    zip 은 iterator 를 반환하므로 index 접근이 가능하게 list 로 저장

 

참고:
https://docs.python.org/ko/3/library/functions.html#zip
https://stackoverflow.com/questions/8421337/rotating-a-two-dimensional-array-in-python

'파이썬' 카테고리의 다른 글

For 문 에서의 List Comprehension  (0) 2023.09.26
list, str reverse  (0) 2021.08.04
functools.lru_cache (functools.cache)  (1) 2021.07.04
Virtualenv 실행시 오류  (0) 2021.02.07