[파이썬] N x N 배열 회전하기

문제

4 x 4 배열을 시계방향으로 90도 회전하는 예시입니다.

규칙을 찾아보면 다음과 같습니다.

  1. 먼저 값 8의 좌표를 알아보면 (1,3)에서 회전 후 (3,2) 가 되었습니다.
  1. 값 10의 좌표 (2,1)은 회전 후 (1,1)이 되었습니다

이렇게 규칙을 찾아나가다 보면 다음과 같은 사실을 알 수 있습니다

의 좌표는 회전 후 의 좌표가 된다
의 좌표는 회전 후 배열길이-1-열의 좌표가 된다

즉, (i,j)는 회전 후 (j,N-1-i)가 됩니다

위의 규칙을 토대로 코드를 작성하면 다음과 같습니다

코드

from copy import deepcopy
def rotate_list(list):
	new_list = deepcopy(list)
    for i in range(len(list)):
        for j in range(len(list)):
            new_list[j][len(list)-1-i] = list[i][j]
	return new_list
  • 함수 rotate_list()는 list를 시계방향으로 90도 회전 후 새로운 리스트를 반환합니다
  • deepcopy 메서드를 사용해서 리스트를 깊은복사합니다
  • 여기서 주의해야할 점은, 새로운 리스트의 (j , N-1-i) 값은 회전 전 (i,j)의 값이어야 합니다. 대입 방향에 주의해야합니다

후기

규칙만 잘 찾아보면 쉬운 문제였습니다

좋은 웹페이지 즐겨찾기