-
[백준] 17276번: 배열 돌리기 (Python)Algorithm PS👩🏻💻/Implementation 2023. 5. 8. 01:34
문제 링크
https://www.acmicpc.net/problem/17276
17276번: 배열 돌리기
각 테스트 케이스에 대해 회전 연산을 마친 후 배열의 상태를 출력한다. n줄에 걸쳐 각 줄에 n개의 정수를 공백으로 구분하여 출력한다.
www.acmicpc.net
풀이 코드
- 시간을 줄이기 위해 코드가 길어졌음. -> 제한 시간이 3초라 안길었어도 될 뻔했다..
- 주대각선, 가운데열, 부대각선, 가운데행 이 4가지 줄만 바뀌므로, 원래 배열에서 이 4가지를 빼서 before 배열에 담아둔다.
- after 배열에 바뀌는 부분만 담는다.
- 각도에 따라 처음 배열의 주 대각선 원소들이 놓여지는 방향이 다르므로, 규칙에 따라 8가지로 나누었다.
- (시간 제한이 3초나 되기 때문에 누적해서 계속 돌려도 통과하는 것 같다. -> 다른 분들 코드 참고)
import sys input = sys.stdin.readline result = [] test_case = int(input()) for _ in range(test_case): array = [] n, d = map(int, input().split()) for _ in range(n): array.append(list(map(int, input().split()))) if d < 0: d = 360 + d start = d // 45 - 1 before = [] before.append([array[i][i] for i in range(n)]) before.append([array[i][(n+1)//2-1] for i in range(n)]) before.append([array[n-i-1][i] for i in range(n-1, -1, -1)]) before.append([array[(n+1)//2-1][i] for i in range(n-1, -1, -1)]) after = [[0] * n for _ in range(n)] # rotate for b_i in range(4): index = (b_i + start) % 8 if index == 0 or index == 4: if index == 0: for i in range(n): after[i][(n + 1)//2-1] = before[b_i][i] if index == 4: for i in range(n): after[n-i-1][(n + 1)//2-1] = before[b_i][i] if index == 1 or index == 5: if index == 1: for i in range(n): after[i][n-i-1] = before[b_i][i] else: for i in range(n): after[n-i-1][i] = before[b_i][i] if index == 2 or index == 6: if index == 2: for i in range(n): after[(n+1)//2 -1][n-i-1] = before[b_i][i] else: for i in range(n): after[(n+1)//2 -1][i] = before[b_i][i] if index == 3 or index == 7: if index == 3: for i in range(n): after[n-i-1][n-i-1] = before[b_i][i] else: for i in range(n): after[i][i] = before[b_i][i] # 남은 칸 채우기 for i in range(n): for j in range(n): if after[i][j] == 0: after[i][j] = array[i][j] for a in range(n): result.append(after[a]) for _ in range(len(result)): print(*result[_])
'Algorithm PS👩🏻💻 > Implementation' 카테고리의 다른 글
[백준]14500번: 테트로미노(Python) (0) 2023.08.11 [백준] 2469번: 사다리 타기(Python) (0) 2023.06.23 [프로그래머스] 2016년(Python) (0) 2023.05.23 [백준] 14719번: 빗물 (Python) (0) 2023.05.14 [백준] 16926번: 배열 돌리기1(Python) (1) 2023.05.10