[BOJ] 배열 돌리기 - 17276 (S1)
[BOJ] 배열 돌리기 - 17276 (S1)
| 시간 제한 | 메모리 제한 |
|---|---|
| 2 초 | 1024 MB |
문제
n × n 크기의 2차원 배열 X가 있을 때, 45도 단위로 배열을 회전시키는 연산을 구현하는 문제이다.
풀이
구현 문제이다. 주 대각선, 가운데 열, 부 대각선, 가운데 행을 회전시킨다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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)
This post is licensed under CC BY 4.0 by the author.