[SWEA]1961.숫자 배열 회전
1961.숫자 배열 회전
문제
N x N 행렬이 주어집니다.
이것이 시계 방향으로 90도, 180도, 270도 회전한 모양을 출력하세요.
제약 사항
3 $leq N $leq 7
생각해보기
1 2 3 4 5 6 7 8 9 가 주어졌을 때 시계 방향으로 90도 돌려보겠습니다.
7 4 1 8 5 2 9 6 3 입니다.
180도를 돌리면,
9 8 7 6 5 4 3 2 1 입니다.
270도 돌리면,
3 6 9 2 5 8 1 4 7 입니다.
그런데 출력시에는 입력과 달리 회전한 모양 사이에만 공백이 존재합니다.
(0, 0)(0, 1)(0, 2) (2, 0)(1, 0)(0, 0) (2, 2)(2, 1)(2, 0) (0, 2)(1, 2)(2, 2) (1, 0)(1, 1)(1, 2) (2, 1)(1, 1)(0, 1) (1, 2)(1, 1)(1, 0) (0, 1)(1, 1)(2, 1) (2, 0)(2, 1)(2, 2) (2, 2)(1, 2)(0, 2) (0, 2)(0, 1)(0, 0) (0, 0)(1, 0)(2, 0)
for문으로 표현을 해보면
for a in [0, 1, 2]:
for b in [0, 1, 2]:
list[a][b] = > 정상 출력, listreverse[b][a] =>b순서 뒤집어서 listreverse[a]reverse[b] 270도는 list/[b]reverse[a]
이렇게 출력하면 됩니다.
### 풀어보기
T = int(input())
for tc in range(1, T+1):
N = int(input())
Nlist = [i for i in range(N)]
case = [ Nlist for j in range(N)]
arr = [list(map(int, input().split())) for _ in range(N)]
B = []
C = []
for a in Nlist:
A = ''
for b in Nlist[::-1]:
A += str(arr[b][a])
B.append(A)
C.append(B)
B = []
for c in Nlist[::-1]:
A = ''
for d in Nlist[::-1]:
A += str(arr[c][d])
B.append(A)
C.append(B)
B = []
for e in Nlist[::-1]:
A = ''
for f in Nlist:
A += str(arr[f][e])
B.append(A)
C.append(B)
print(f'#{tc}')
for l in range(N):
print(C[0][l], C[1][l], C[2][l])
처음에 한번 Fail이 났습니다. 보니까 270도 돌려줬을 때의 for문을 잘못적었습니다.
for e in Nlist:
A = ''
for f in Nlist[::-1]:
A += str(arr[e][f])
이렇게 적어서 (0,2)(0, 1)(0, 0)(1, 2)(1, 1)…이 위치의 값이 출력되었습니다.
그래서 잘 고쳐주었습니다.
댓글남기기