리트코드 / 파이썬 / 48. Rotate Image
https://leetcode.com/problems/rotate-image/
풀이 방법
주어진 array를 90도 회전하라는 문제인데, 행렬의 연산을 이리저리 하다 보면 90도 회전한 array를 볼 수 있다.
첫번째 방법은 1. transpose(전치) 2. array의 열 뒤집기를 하는 방법이다.
두번째 방법은 아래 그림과 같이 element를 한 번에 4개씩 회전해주는 방법이다.
그림에서는 노란색->빨간색->초록색 순으로 iteration을 돌면서 오른쪽 위 첨자가 같은 element들끼리 90도씩 회전하여 자리를 바꿔준다.row, column 순회 방향은 각각 그림의 파랑색 1번, 2번이다.
소스 코드
첫번째 방법
class Solution(object):
def rotate(self, matrix):
matrix_len = len(matrix)
for ix, x in enumerate(matrix):
for iy, y in enumerate(x):
if iy <= ix:
continue
matrix[ix][iy] = matrix[iy][ix]
matrix[iy][ix] = y
for col in range(matrix_len // 2):
for row in range(matrix_len):
temp = matrix[row][col]
matrix[row][col] = matrix[row][matrix_len - 1 - col]
matrix[row][matrix_len - 1 - col] = temp
print(matrix)
return matrix
두번째 방법
class Solution(object):
def rotate(self, matrix):
n = len(matrix)
for i in range(n // 2):
for j in range(i, n - i - 1):
matrix[i][j], matrix[j][~i], matrix[~i][~j], matrix[~j][i] = \
matrix[~j][i], matrix[i][j], matrix[j][~i], matrix[~i][~j]
'Leetcode' 카테고리의 다른 글
[Leetcode][Python] 61. Rotate List (0) | 2020.09.19 |
---|---|
[Leetcode][Python] 29. Divide Two Integers 3Sum (0) | 2020.09.19 |
[Leetcode][Python] 15. 3Sum (0) | 2020.09.19 |
[Leetcode][Python] 19. Remove Nth Node From End of List (0) | 2020.09.19 |
[Leetcode][Python] 57. Insert Interval (0) | 2020.09.19 |