728x90
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Pq-OKAVYDFAUq
< 📝 문제 >
N x N 행렬이 주어질 때,
시계 방향으로 90도, 180도, 270도 회전한 모양을 출력하라.
< ❓ 생각 >
1.
2.
90도 회전 + 90도 회전 = 180도 회전
< 💻 코드 >
1.
# 테스트 케이스 개수
T = int(input())
for tc in range(1,T+1):
# N*N 행렬
N = int(input())
arr1 = [list(map(str,input().split())) for _ in range(N)]
# 90도 회전
arr2 = [[0]*N for _ in range(N)]
# 180도 회전
arr3 = [[0] * N for _ in range(N)]
# 270도 회전
arr4 = [[0] * N for _ in range(N)]
for i in range(N):
for j in range(N):
arr2[i][j] = arr1[N-1-j][i]
arr3[i][j] = arr1[N-1-i][N-1-j]
arr4[i][j] = arr1[j][N-1-i]
print(f'#{tc}')
for a1,a2,a3 in zip(arr2,arr3,arr4):
a11 = ''.join(a1)
a22 = ''.join(a2)
a33 = ''.join(a3)
print(a11,a22,a33)
2.
#90도 회전
def degree_90(arr):
result = [[0] * N for _ in range(N)]
for i in range(N):
for j in range(N):
result[i][j] = arr[N-1-j][i]
return result
# 테스트 케이스 개수
T = int(input())
for tc in range(1,T+1):
# N*N 행렬
N = int(input())
arr = [list(map(str,input().split())) for _ in range(N)]
# 90도 회전
arr2 = degree_90(arr)
# 90도 회전 + 90도 회전 = 180도 회전
arr3 = degree_90(arr2)
# 90도 회전 + 90도 회전 + 90도 회전 = 70도 회전
arr4 = degree_90(arr3)
print(f'#{tc}')
for a,b,c in zip(arr2,arr3,arr4):
a1 = ''.join(a)
b1 = ''.join(b)
c1 = ''.join(c)
print(a1,b1,c1)
< ❗ >
인덱스 활용!!!
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[SWEA] 4866. 괄호검사 - Python (0) | 2022.02.22 |
---|---|
[SWEA] 4869. 종이 붙이기 - Python (0) | 2022.02.22 |
[SWEA] 1859. 백만 장자 프로젝트 - Python (0) | 2022.02.20 |
[SWEA] 1974. 스도쿠 검증 - Python (0) | 2022.02.20 |
[SWEA] 1979. 어디에 단어가 들어갈 수 있을까 - Python (0) | 2022.02.20 |
댓글