알고리즘 문제를 풀 때 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 |