https://programmers.co.kr/learn/courses/30/lessons/68645
num = 2
pos = [0, 0]
dy = [1, 0, -1]
dx = [0, 1, -1]
gn = 0
board = []
def solution(n):
global board, gn
gn = n
board = [[0] * i for i in range(1, n+1)]
board[0][0] = 1
goal = sum(map(len, board))
while num <= goal:
for d in range(3):
move(d)
if num > goal:
break
return sum(board, [])
def move(d):
global num, pos
while True:
cy, cx = pos
ny = cy + dy[d]
nx = cx + dx[d]
if 0 <= ny < gn and 0 <= nx < len(board[ny]):
if board[ny][nx] == 0:
pos = [ny, nx]
board[ny][nx] = num
num += 1
continue
break