T = int(input())
for tc in range (1, T+1):
n = int(input())
if n == 1:
print('#{}'.format(tc))
print(1)
continue
처음에 입력된 숫자만큼 반복하는 기능을 먼저 구현한다.
from collections import deque
numbers = deque([i for i in range (1, (n*n)+1)])
answer = [[0 for _ in range(n)] for i in range(n)]
2차원 리스트를 구성,
들어갈 숫자도 모두 한 리스트에 넣어준다. ( 취향임 )
y = 0
x = 0
vector = 'left'
while numbers:
k = numbers.popleft()
if vector == 'left':
answer[y][x] = k
x += 1
if answer[y][count-1] != 0:
vector = 'down'
x -= 1
if vector == 'down':
answer[y][x] = k
y += 1
if answer[count-1][x] != 0:
vector = 'right'
y -= 1
if vector == 'right':
answer[y][x] = k
x -= 1
if answer[y][n-count] != 0:
count -= 1
vector = 'up'
x += 1
if vector == 'up':
answer[y][x] = k
y -= 1
if answer[n-count][x] != 0:
vector = 'left'
y += 1
x += 1
2차원 리스트를 컨트롤 하기위해서 x축과 y축을 만들어주고,
vector 라는 변수로 방향을 컨트롤 해준다.
이제 방향을 바꿔가면서 준비한 number queue를 하나씩 터트려주면 완성!
print('#{}'.format(tc))
for a in range (n):
for b in range(n):
if b+1 == n:
print(answer[a][b])
else :
print(answer[a][b], end=' ')
출력은 반복문으로 해줬다!
'코딩' 카테고리의 다른 글
[클론코딩][플러터] 개발하는남자 당근마켓 클론코딩 리뷰 (0) | 2022.09.06 |
---|---|
[다트] [오류] The argument type 'Widget' can't be assigned to the parameter type "PreferredSizeWidget?". (0) | 2022.09.04 |
[SWEA] D2 1859. 백만 장자 프로젝트 문제 풀이 (0) | 2022.09.02 |
[다트][인프런][코드팩토리] 다트 기초 문법 텍스트 정리 (1) | 2022.08.31 |
[코딩 교육] PY4E 2022 코칭스터디 후기 (0) | 2022.08.31 |