백준 17276 배열 돌리기 / python

이유참치·2026년 2월 20일

백준

목록 보기
221/249

문제 : 17276

풀이 point

그대로 구현하면 되는 문제이다.

음수와 양수를 따로 구현하지 않고 360에서 빼서 계산하여도 된다.

풀이 코드

for _ in range(int(input())):
  N, D = map(int, input().split())

  grid = [list(map(int, input().split())) for _ in range(N)]

  if D < 0:
    repeat = (-D)//45
    for _ in range(repeat):
      width = []; height = []; diagonal1 = []; diagonal2 = []
      for i in range(N):
        #가로 세로
        width.append(grid[N//2][i])
        height.append(grid[i][N//2])
        
        #대각선
        diagonal1.append(grid[i][i])
        diagonal2.append(grid[i][N-i-1])
      for i in range(N):
        grid[i][i] = height[i]
        grid[i][N-i-1] = width[N-i-1]
        grid[N//2][i] = diagonal1[i]
        grid[i][N//2] = diagonal2[i]
  else:
    repeat = D//45
    for _ in range(repeat):
      width = []; height = []; diagonal1 = []; diagonal2 = []
      for i in range(N):
        #가로 세로
        width.append(grid[N//2][i])
        height.append(grid[i][N//2])
        
        #대각선
        diagonal1.append(grid[i][i])
        diagonal2.append(grid[i][N-i-1])
      for i in range(N):
        grid[i][i] = width[i]
        grid[i][N-i-1] = height[i]
        grid[N//2][i] = diagonal2[N-i-1]
        grid[i][N//2] = diagonal1[i]
  
  for row in grid:
    print(*row)

사족

돌릴 때마다 4가지 리스트 값을 다시 구하고 돌렸어야 했는데 제대로 인지하지 못해서 헤맸던게 조금 아쉽다. (초기화도 까먹음)

profile
임아리 - 대학생

0개의 댓글