규도자 개발 블로그
[SWEA/1961/파이썬3(python3)] 숫자 배열 회전 본문
[SWEA/1961/파이썬3(python3)] 숫자 배열 회전
문제
N x N 행렬이 주어질 때,
시계 방향으로 90도, 180도, 270도 회전한 모양을 출력하라.
제한사항
N은 3 이상 7 이하이다.
입력
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에 N이 주어지고,
다음 N 줄에는 N x N 행렬이 주어진다.
10
3
1 2 3
4 5 6
7 8 9
6
6 9 4 7 0 5
8 9 9 2 6 5
6 8 5 4 9 8
2 2 7 7 8 4
7 5 1 9 7 9
8 9 3 9 7 6
…
출력
출력의 첫 줄은 '#t'로 시작하고,
다음 N줄에 걸쳐서 90도, 180도, 270도 회전한 모양을 출력한다.
입력과는 달리 출력에서는 회전한 모양 사이에만 공백이 존재함에 유의하라.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
#1
741 987 369
852 654 258
963 321 147
#2
872686 679398 558496
952899 979157 069877
317594 487722 724799
997427 894586 495713
778960 562998 998259
694855 507496 686278
…
풀이
case_count = int(input())
for i in range(1, case_count + 1):
length = int(input())
matrix = [list(map(int, input().split())) for _ in range(length)]
rotate_90 = [[0] * length for _ in range(length)]
rotate_180 = [[0] * length for _ in range(length)]
rotate_270 = [[0] * length for _ in range(length)]
for col in range(length):
for row in range(length):
rotate_90[row][length-col-1] = matrix[col][row]
rotate_180[length-col-1][length-row-1] = matrix[col][row]
rotate_270[length-row-1][col] = matrix[col][row]
print('#{}'.format(i))
for col in range(length):
print(''.join(list(map(str, rotate_90[col]))), end=' ')
print(''.join(list(map(str, rotate_180[col]))), end=' ')
print(''.join(list(map(str, rotate_270[col]))))
설명
프로그래밍을 배울 때 2차원 배열을 배우면서 꼭 한 번 쯤은 풀게 되는 배열 회전 문제이다. 예전 기억을 더듬어봤을 땐 90도 회전만 한번 해봤었던 것 같은데 이 문제는 180도와 270도 회전도 각각 있고 출력 방식이 굉장히 참신해서 재밌어서 남겨봤다. 로직 만들 때 잠깐 귀찮은 생각이 들어서 180도 회전은 90도 회전 두번 먹이고, 270도 회전은 90도 회전 세번 먹이는 식으로 하려고 했다가 너무 날먹이라 그냥 제대로 짜봤다.
'알고리즘 > 풀이' 카테고리의 다른 글
[백준/1149/파이썬] RGB거리 (1) | 2021.10.12 |
---|---|
[SWEA/12741/파이썬3(python3)] 두 전구 (0) | 2021.09.29 |
[SWEA/1974/파이썬3(python3)] 스도쿠 검증 (1) | 2021.08.30 |
[SWEA/2007/파이썬3(python3)] 패턴 마디의 길이 (0) | 2021.08.25 |
[프로그래머스/Level1/파이썬3(python3)] 직업군 추천하기 (0) | 2021.08.23 |
Comments