[SW Expert Academy][D2][python]1961. 숫자 배열 회전 join
코딩테스트 문제 푸는 방향
1. 문제를 정독한다. 정독하면서 손으로 한 번 풀어본다.
2. 접근 방법을 구상한다.
3. 핵심 코드를 시각적으로 보이도록 손코딩한다.
4. 코드를 구현한다.
5. 디버깅 및 개선을 한다.
6. 부분 정답이 나올 시 1번으로 돌아가 더 꼼꼼하게 읽어보고 다른 접근 방법은 없는지 생각해본다.
1961. 숫자 배열 회전
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
N x N 행렬이 주어질 때
시계 방향으로 90도, 180도, 270도 회전한 모양을 출력하면 된다.
[제약 사항]
N은 3이상 7이하이다.
[문제 해결 방향]
이제 N*N 행렬을 입력받는건 껌이쥐. 여기까지는 그랬다,,ㅎ
일단 회전을 시키게 되면 나오는 좌표(i, j)의 규칙을 찾아야 하는데
N = 3 일 때 먼저 90도를 돌려보면
(0,0) -> (2,0)
(0,1) -> (1,0)
(0,2) -> (0,0)
(1,0) -> (2,1)
(1,1) -> (1,1)
(1,2) -> (0,1)
(2,0) -> (2,2)
(2,1) -> (1,2)
(2,2) -> (0,2)
j의 자리에는 i가 그대로 와있는 것을 볼 수 있다.
그리고 i의 자리에는 N-j-1이 와있는 것을 볼 수 있다.
이 규칙이 확실한지 또 보기 위해 그 다음으로 90도를 더 돌려보면
(2,0) -> (2,2)
(1,0) -> (2,1)
(0,0) -> (2,0)
(2,1) -> (1,2)
(1,1) -> (1,1)
(0,1) -> (1,0)
(2,2) -> (0,2)
(1,2) -> (0,1)
(0,2) -> (0,0)
규칙이 성립하는 것을 볼 수 있다.
근데 규칙을 찾는 것보다 제일 충격적인 출력하기,,,
요렇게 세로로 출력을 해야 한다,,
90도 한 줄, 180도 한 줄, 270도 한 줄을 한 칸씩 띄어서 출력하고 개행한 다음
한 줄씩 출력한다,, ㅎ
참고 사이트에서는 살짝 복잡하게 했는데 join을 사용하면 더 간단하게 출력할 수 있더
join으로 출력하는 방법 알아두기!! 중요!!
[파이썬 코드]
T = int(input())
for test_case in range(1, T+1):
N = int(input())
# N*N 행렬 입력받기
arr = [list(input().split()) for _ in range(N)]
# 90도, 180도, 270도 행렬 초기화
arr_90 = [[0 for _ in range(N)] for _ in range(N)]
arr_180 = [[0 for _ in range(N)] for _ in range(N)]
arr_270 = [[0 for _ in range(N)] for _ in range(N)]
# 90도 회전
for i in range(N):
for j in range(N):
arr_90[i][j] = arr[N-1-j][i]
# 90도를 90도 회전 -> 180도 회전
for i in range(N):
for j in range(N):
arr_180[i][j] = arr_90[N-1-j][i]
# 180도를 90도 회전 -> 270도 회전
for i in range(N):
for j in range(N):
arr_270[i][j] = arr_180[N-1-j][i]
print("#{}".format(test_case))
# join으로 출력하기
for i in range(N):
print(''.join(arr_90[i]), ''.join(arr_180[i]), ''.join(arr_270[i]))
[참고 사이트]
Algorithm | SWEA 1961.숫자배열회전 (python)
본 문제의 저작권은 SW Expert 아카데미에 있습니다. > > SWEA 1961.숫자배열회전 링크 문제 코드 풀이 테스트 케이스 NxN 행렬 을 입력받으면 그 행렬을 시계방향으로 90도 / 180도 / 270도 회전한 행렬을
velog.io
이 사이트를 보고 어떻게 해결해야 할지 한 번에 이해를 했다
90도 회전한걸 90도 회전하면 원래걸 180도 회전한거고 그걸 또 90도 회전하면 원래걸 270도 회전시킨거고 암튼 그렇다
허
https://pythontoomuchinformation.tistory.com/69
SWEA # Python_D2_1961_숫자 배열 회전
👩🌾 [문제] N x N 행렬이 주어질 때, 시계 방향으로 90도, 180도, 270도 회전한 모양을 출력하라. SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertac
pythontoomuchinformation.tistory.com
[느낀점]
배열을 회전시키는 걸 생각하는게 좀 생각이 안났는데 한 번 보니까 괜찮은 것 같다ㅏㅏ
d2도 버거워ㅜㅜ d3 언제 올라갈 수 있어ㅜㅜ