-
파이썬 2차원 리스트 회전 (How to rotate 2D list on Python)Data Structure & Algorithm 2021. 7. 20. 09:31반응형
1. 회전 각도(90도, 180도, 270도)를 파라메터로 받아 회전된 2차원 리스트를 반환하는 함수
2. zip을 활용한 90도 회전된 2차원 리스트 반환 함수 (very simple ans faster than 1)
[회전 각이 추가된 2차원 리스트 회전 함수]
나동빈 님의 이코테로 알고리즘을 공부하던 중 2차원 리스트를 회전시키는 코드를 보고 원하는 각도를 지정하여 회전시키면 더 효율적일 수 있을 것 같다는 생각이 들어 다음과 같이 각도에 해당하는 매개 값을 지정하여 2차원 list를 회전시키는 코드를 작성해 보았다.
첫 번째 매개 값 tgt_list에는 회전시킬 2차원 list를 지정한다.
두 번째 매개 값 angle은 회전할 각도를 지정한다.
- angle = 1 --> 90도 회전
- angle = 2 --> 180도 회전
- angle = 3 --> 270도 회전
- angle = 1~3 외의 입력 --> 회전하지 않음
''' if angle is 1 then rotate 90 degrees if angle is 2 then rotate 180 degrees if angle is 3 then rotate 270 degrees else don't rotate ''' def rotate(tgt_list, angle): n = len(tgt_list) m = len(tgt_list[0]) if angle == 1: result = [[0] * n for _ in range(m)] for i in range(n): for j in range(m): result[j][n - i - 1] = tgt_list[i][j] return result elif angle == 2: result = [[0] * m for _ in range(n)] for i in range(n): for j in range(m): result[n - i - 1][m - j - 1] = tgt_list[i][j] return result elif angle == 3: result = [[0] * n for _ in range(m)] for i in range(n): for j in range(m): result[m - j - 1][i] = tgt_list[i][j] return result else: return tgt_list
[zip을 활용한 simple 2차원 리스트 회전 함수]
동일 column 별 요소끼리 묶은 데이터를 역순으로 뒤집어 리스트로 만들고
만든 리스트들을 원소로 갖는 리스트를 반환한다.
def rotate(tgt_list): return [list(reversed(elem)) for elem in zip(*tgt_list)]
'Data Structure & Algorithm' 카테고리의 다른 글
소수판별 알고리즘 (0) 2021.08.16 1부터 순서대로 값을 채운 N * N 2차원 리스트 (0) 2021.08.15 위상정렬(topological sort) (0) 2021.05.31 최소신장트리를 구하기 위한 쿠르스칼 알고리즘 (Kruskal's algorithm for Minimum Spanning Tree) (0) 2021.05.26 플로이드워셜(Floyd–Warshall) 알고리즘 (0) 2021.05.12