문제
https://school.programmers.co.kr/learn/courses/30/lessons/68645
정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요.

제한사항
- n은 1 이상 1,000 이하입니다.
입출력 예

나의 풀이
def solution(n):
snail = [[0] * i for i in range(1, n + 1)]
moves = [(1, 0), (0, 1), (-1, -1)]
turns = [0]
for i in range(n, 0, -1):
turns.append(turns[-1] + i)
r, c, j = -1, 0, 0
for i in range(1, n + 1):
dr, dc = moves[j]
for num in range(turns[i - 1] + 1, turns[i] + 1):
r += dr
c += dc
snail[r][c] = num
j = (j + 1) % 3
answer = []
for arr in snail:
answer += arr
return answer
`moves`에 아래, 오른쪽, 위로 움직이는 세 가지 이동 방향을 순서대로 저장했다.
`turns`에는 한 번 꺾을 때마다 이동 횟수가 `n, n-1, n-2, …`씩 줄어드는 규칙을 이용해서
누적합 형태로 꺾이는 시점을 미리 저장했다.
`turns`를 기준으로 각 구간이 끝날 때마다 `moves`의 방향을 전환하며
달팽이 모양으로 숫자를 채워나가도록 구현했다.
