문제를 풀다보면 배열을 시계방향으로 90도로 회전하는 문제들이 많다. ex) 백준 18808번 스티커 붙이기
예를 들어 3x4 리스트를 시계방향으로 90도씩 회전하면 아래와 같이 만들어진다.
총 4번의 회전이 끝나면 360도가 되어 원래 모양으로 되돌아 온다.
이를 파이썬에서는 2가지 방법으로 구현할 수 있다.
일반적인 방법
import copy
_list = [[1,2,3], [4,5,6], [7,8,9], [10,11,12]]
n = len(_list)
m = len(_list[0])
result = [[0]* n for _ in range(m)]
for i in range(n):
for j in range(m):
result[j][n-i-1] = _list[i][j]
_list = copy.deepcopy(result)
for i in range(len(_list)):
for j in range(len(_list[i])):
print(_list[i][j], end=' ')
print()
zip 함수를 사용
import copy
_list = [[1,2,3], [4,5,6], [7,8,9], [10,11,12]]
tmp = []
for item in zip(*_list): # 꼭 * 이게 들어감
tmp.append(list(reversed(item)))
_list = copy.deepcopy(tmp)
for i in range(len(_list)):
for j in range(len(_list[i])):
print(_list[i][j], end=' ')
print()
# 출력 결과
10 7 4 1
11 8 5 2
12 9 6 3