코딩테스트/SWEA
[Python, 파이썬] SWEA 1961. 숫자 배열 회전
알코딩
2024. 11. 11. 21:10
N x N 행렬이 주어질 때, 시계 방향으로 90도, 180도, 270도 회전한 모양을 출력하는 문제.
T = int(input()) # 테스트케이스의 개수 T
for test_case in range(1, T+1):
N = int(input()) # 행렬 N
matrix = [input().split() for i in range(N)]
reverse = list(zip(*matrix)) # 전치 행렬
print("#%d" %(test_case)) # 테스트케이스의 번호 출력
for i in range(N):
rotate90 = ''.join(reverse[i]) # 문자열로 변환
rotate90 = rotate90[::-1] # 역순으로 만든다 rotate 90도!
rotate180 = ''.join(matrix[N-(i+1)]) # 아래서부터 위까지
rotate180 = rotate180[::-1] # 역순
rotate270 = ''.join(reverse[N-(i+1)]) # 오른쪽부터 왼쪽
print(rotate90, rotate180, rotate270)
[문제풀이]

90도 회전한 건 이렇게 왼쪽에서부터 아래쪽부터 위로 요소를 가져와 붙이는 741, 852, 963이고, 180도 회전의 경우엔 배열의 마지막 행부터 첫 행까지 역순으로 가져와 987, 654, 321 이렇게 하는 방식이다.
270도 회전의 경우엔 오른쪽부터 왼쪽으로 위에서부터 아래로 요소를 가져와 369, 258, 147 식으로 구한다.
이걸 그냥 코드로 구현해 print하면 끝.