구현 문제
내려가면서 추가하는 부분, 현재 줄에서 추가하는 부분, 올라가면서 추가하는 부분을 각각 분리해서 처리
더 깔끔하게 할 수 있을 것 같은데 하다보니 조잡해졌다.
def solution(n):
# init
triangle = [[] for _ in range(n)]
for i in range(n):
triangle[i] = [0 for _ in range(i+1)]
def add_empty_front(layer, value):
for i in range(len(triangle[layer])):
if triangle[layer][i] == 0:
triangle[layer][i] = value
return
def add_empty_rear(layer, value):
for i in range(len(triangle[layer])-1, -1, -1):
if triangle[layer][i] == 0:
triangle[layer][i] = value
return
def move_a(layer, move_count, value):
for i in range(move_count):
layer += 1
add_empty_front(layer, value)
value += 1
# next b
return (layer, move_count-1, value)
def move_b(layer, move_count, value):
for i in range(move_count):
add_empty_front(layer, value)
value += 1
# next c
return (layer, move_count-1, value)
def move_c(layer, move_count, value):
for i in range(move_count):
layer -= 1
add_empty_rear(layer, value)
value += 1
# next a
return (layer, move_count-1, value)
params = (-1, n, 1)
for i in range(n):
if i % 3 == 0:
params = move_a(params[0], params[1], params[2])
elif i % 3 == 1:
params = move_b(params[0], params[1], params[2])
else:
params = move_c(params[0], params[1], params[2])
# print(triangle)
answer = []
for i in range(n):
for x in triangle[i]:
answer.append(x)
return answer