알고리즘 문제풀이
Swea D2_1961. 숫자 배열 회전 Python
아크몽
2024. 2. 18. 03:27
풀이 포인트
1. 90도 씩 호출하는 것
2. 90도 짜리 구하기 -> 90도 돌린 배열을 90도씩 2번 돌리기
90도 돌린것 구하는데 너무 오래시간을 소모함...
T = int(input())
for tc in range(1,T+1):
N = int(input())
arr = [list(map(str,input().split())) for _ in range(N)]
arr90 = [[0] * N for _ in range(N)]
arr180 = [[0] * N for _ in range(N)]
arr270 = [[0] * N for _ in range(N)]
# 90 도
for i in range(N):
for j in range(N):
arr90[j][N-1-i] = arr[i][j]
# 180 도
for i in range(N):
for j in range(N):
arr180[j][N - 1 - i] = arr90[i][j]
# 270 도
for i in range(N):
for j in range(N):
arr270[j][N - 1 - i] = arr180[i][j]
print(f'#{tc}')
for i in range(N):
print(''.join(arr90[i]),''.join(arr180[i]),''.join(arr270[i]))
개선할 수 있는 점
1. zip 함수 사용할 수도 있음
for a,b,c in zip(arr2,arr3,arr4):
a1 = ''.join(a)
b1 = ''.join(b)
c1 = ''.join(c)
print(a1,b1,c1)
2. 같은것을 반복 => 함수사용
def degree90(arr):
arr90 = [[0] * N for _ in range(N)]
for i in range(N):
for j in range(N):
arr90[i][j] = arr[N-1-j][i]
return arr90