Skip to content
CatBus
Go back

[BOJ] 배열 돌리기 - 17276 (S1)

시간 제한메모리 제한
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)


Share this post:

비슷한 글

17276이 글

본문을 Xenova/multilingual-e5-small 로 임베딩하고, 그 벡터를 PCA 로 32축에 눌러 왼쪽 막대로 그렸습니다. 비슷한 글은 지문도 닮습니다 — 위아래를 견줘 보세요. 계산은 빌드 때 끝나고 벡터는 브라우저로 오지 않습니다.

Previous Post
[BOJ] 배열 돌리기 1 - 16926 (G5)
Next Post
[BOJ] ZOAC - 16719 (G5)