def solution(n):
answer = []
num_list = [[0] * i for i in range(1, n + 1)] # 삼각형 배열 초기화
x, y = 0, 0 # 시작 위치
cnt = n * (n + 1) // 2 # 채워야 할 총 숫자
dx = [1, 0, -1] # x 변화량 (아래 -> 오른쪽 -> 대각선 위-왼쪽)
dy = [0, 1, -1] # y 변화량
d = 0 # 현재 방향 (0: 아래, 1: 오른쪽, 2: 대각선 위-왼쪽)
for i in range(1, cnt + 1):
num_list[x][y] = i # 현재 위치에 숫자 채우기
# 다음 위치 계산
nx, ny = x + dx[d], y + dy[d]
# 다음 위치가 범위를 벗어나거나 이미 채워져 있으면 방향 전환
if nx >= n or ny < 0 or ny >= len(num_list[nx]) or num_list[nx][ny] != 0:
d = (d + 1) % 3
nx, ny = x + dx[d], y + dy[d]
# 위치 갱신
x, y = nx, ny
answer = [num for row in num_list for num in row]
return answer
PREVIOUS[백준] 색종이 만들기