| 시간 제한 | 메모리 제한 |
|---|---|
| 2 초 | 1024 MB |
문제
n × n 크기의 2차원 배열 X가 있을 때, 45도 단위로 배열을 회전시키는 연산을 구현하는 문제이다.
풀이
구현 문제이다. 주 대각선, 가운데 열, 부 대각선, 가운데 행을 회전시킨다.
코드
from copy import deepcopy
class Matrix:
def __init__(self):
self.size, degree = map(int, input().split())
self.rotate_n = (degree + 360) // 45
self.matrix = [list(map(int, input().split())) for _ in range(self.size)]
self.mid = self.size // 2
def rotate_matrix(self):
new_matrix = deepcopy(self.matrix)
for _ in range(self.rotate_n):
for i in range(self.size):
new_matrix[i][self.mid] = self.matrix[i][i]
new_matrix[self.size - i - 1][i] = self.matrix[self.size - i - 1][self.mid]
new_matrix[self.mid][i] = self.matrix[self.size - i - 1][i]
new_matrix[i][i] = self.matrix[self.mid][i]
self.matrix = deepcopy(new_matrix)
return new_matrix
def print_matrix(self):
for row in self.matrix:
print(*row)
if __name__ == "__main__":
TC = int(input())
for _ in range(TC):
matrix = Matrix()
matrix.rotate_matrix()
matrix.print_matrix()
시간 복잡도
O(N^2)