Problem Solving/알고리즘

Python 파이썬 - 2차원 리스트 90도 회전 (zip 메서드 활용)

돌돌김 2021. 1. 17. 02:46

 

문제를 풀다보면 배열을 시계방향으로 90도로 회전하는 문제들이 많다. ex) 백준 18808번 스티커 붙이기

 

 

예를 들어 3x4 리스트를 시계방향으로 90도씩 회전하면 아래와 같이 만들어진다.

 

각 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