코딩
[SWEA] D2 1954. 달팽이 숫자 python 풀이( 2차원 그래프에 방향 적용하기)
블루베리QA
2022. 9. 3. 17:37
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
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=' ')
출력은 반복문으로 해줬다!