풀이 1) 행렬을 90도 돌리면서 값 구하기
# 받은 행렬 90도 돌려주는 함수 def revolution_90(matrix): # 빈 행렬 만들기 new_matrix = [[0 for _ in range(n)] for _ in range(n)] # 90도 돌리기 for i in range(n): for j in range(n): new_matrix[j][n-i-1] = matrix[i][j] # ['1', '2', '3'] 이면 '123' 의 형태로 출력해야하기 때문에 붙여서 넣어주었다. complete = [''.join(line) for line in new_matrix] return complete def revolution_90_simple(matrix): new_matrix = [] for i in zip(*matrix): new_matrix.append(''.join(map(str, i[::-1]))) return new_matrix t = int(input()) for idx in range(1, t+1): print('#{}'.format(idx)) n = int(input()) # 행렬 받아오기 matrix = [] for _ in range(n): matrix.append(list(map(str, input().split()))) d_90 = revolution_90(matrix) # 받아온 행렬에서 90도 돌리기 d_180 = revolution_90(d_90) # 90도 돌린 행렬에서 90도 돌리기 -> 180도 d_270 = revolution_90(d_180) # 180도 돌린 행렬에서 90도 돌리기 -> 270도 for i in range(n): # 90도, 180도, 270도의 i행 출력 print(d_90[i], d_180[i], d_270[i])
풀이 2) 각 각도마다 자리 찾아 넣기
t = int(input()) for idx in range(1, t+1): print('#{}'.format(idx)) n = int(input()) # n * n 행렬 받아오기 matrix = [] for _ in range(n): # 문자열로 붙여줄것이기 때문에 문자 타입으로 넣어줌 matrix.append(list(map(str, input().split()))) # 각도마다 회전한 모양 담을 리스트 # 각 행을 붙여서 print해야 하기 떄문에 빈 문자열 넣어준다. # ex) 1행 : ['1', '2', '3'] -> '123' r_90 = ['' for _ in range(n)] r_180 = ['' for _ in range(n)] r_270 = ['' for _ in range(n)] for i in range(n): for j in range(n): r_90[n-i-1] = matrix[j][n-i-1] + r_90[n-i-1] r_180[i] += matrix[n-i-1][n-j-1] r_270[n-i-1] = matrix[n-j-1][i] + r_270[n-i-1] for i in range(n): # 90도 180도 270도의 i행 출력 print(r_90[i], r_180[i], r_270[i])
'Algorithm > SW Expert Academy' 카테고리의 다른 글
[Python] 4408. 자기 방으로 돌아가기 (0) | 2021.09.16 |
---|---|
[Python] 1974. 스도쿠 검증 (0) | 2021.09.16 |
[Python] 1859. 백만장자 프로젝트 (0) | 2021.09.16 |
[Python] 1234. 비밀번호 (0) | 2021.09.16 |
[Python] 4613. 러시아 국기 같은 깃발 (0) | 2021.09.14 |