풀이 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 |