
파이썬에 1000x1000 배열까지는 감당 가능하다고 해서 배열을 그린 뒤에 하나씩 숫자를 써넣었다. 방향은 ⬇️ ➡️ ↖️ 이렇게 세 방향을 계속해서 반복했다.
n = 4라고 할때, 처음에는 4칸 ⬇️, 다음은 3칸 ➡️, 다음은 2칸 ↖️, 다음은 1칸 ⬇️ 과 같은 방식으로 그려지는 걸 알 수 있다. 방향과 칸 수를 계속 바꿔주면서 그린다음에 0칸이 나오면 종료한다.
def solution(n):
dx = (1, 0, -1)
dy = (0, 1, -1)
arr = [[0] * n for _ in range(n)]
def draw_triangle(n):
num, d, x, y = 1, 0, -1, 0
while True:
if n == 0:
break
for _ in range(n):
x += dx[d]
y += dy[d]
arr[x][y] = num
num += 1
n -= 1
d = (d+1)%3
draw_triangle(n)
answer = []
for i in range(n):
answer.extend(arr[i][:i+1])
return answer