Notice
Recent Posts
Recent Comments
Link
개발 공부~
[SWEA D2] 1961. 숫자 배열 회전.py 본문
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제
N x N 행렬이 주어질 때,
시계 방향으로 90도, 180도, 270도 회전한 모양을 출력하라.
- 제약 사항
- N은 3 이상 7 이하이다.
- 입력각 테스트 케이스의 첫 번째 줄에 N이 주어지고, 다음 N 줄에는 N x N 행렬이 주어진다.
- 가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
- 출력다음 N줄에 걸쳐서 90도, 180도, 270도 회전한 모양을 출력한다.(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
- 입력과는 달리 출력에서는 회전한 모양 사이에만 공백이 존재함에 유의하라.
- 출력의 첫 줄은 '#t'로 시작하고,
ex
입력
1
3
1 2 3
4 5 6
7 8 9
출력
#1
741 987 369
852 654 258
963 321 147
Solution
- 90도, 180도, 270도 를 각각 생각하지말고 90도 회전 시킨 배열을 계속 이용한다는 접근을 생각 못함 -> 도움을 받음
- https://www.youtube.com/watch?v=2uDBRunCbqc
- 회전시킨 배열의 행마다 문자열로 만들어 하나의 이차원 배열의 원소로 넣는 것이 어려웠음
-> zip()과 ''.join(map(str,적용시킬 문자))에 대한 이해가 잘 되지않았는데 이 문제를 통해 배웠다.
# 회전하는 함수
def recur(ar):
result = [ [0]*n for _ in range(n)]
for i in range(n):
for j in range(n):
result[j][n-i-1] = ar[i][j]
return result
T = int(input())
for tc in range(1,T+1):
n =int(input())
arr= [ list(map(int,input().split())) for _ in range(n)]
arr2 = recur(arr)
arr3 = recur(arr2)
arr4 = recur(arr3)
print(f'#{tc}')
for a,b,c in zip(arr2,arr3,arr4):
print(''.join(map(str, a)), ''.join(map(str, b)), ''.join(map(str, c)))
'코딩테스트 > SWEA' 카테고리의 다른 글
[SWEA D2] 1954. 달팽이 숫자.py (1) | 2024.07.04 |
---|---|
[SWEA D2] 1959. 두 개의 숫자열 (1) | 2024.07.02 |
[SWEA D2] 1974. 스도쿠 검증.py (1) | 2024.07.02 |
[SWEA D2] 1979. 어디에 단어가 들어갈 수 있을까.py (0) | 2024.07.02 |
[SWEA D2] 2001. 파리 퇴치 (0) | 2024.07.01 |