def solution(n):
answer = [[0] * n for _ in range(n)]
count = 1
start_row = 0
start_col = 0
end_row = n - 1
end_col = n - 1
while count <= n*n :
for i in range(start_col, end_col + 1):
answer[start_row][i] = count
count += 1
start_row += 1
for i in range(start_row, end_col + 1):
answer[i][end_col] = count
count += 1
end_col -= 1
for i in range(end_col, start_col - 1, -1):
answer[end_row][i] = count
count += 1
end_row -= 1
for i in range(end_row, start_row - 1, -1):
answer[i][start_col] = count
count += 1
start_col += 1
return answer
- 0으로만 이루어진 2차원 만들기
- 나선형으로 배치하려면 각 방향의 마지막 인덱스에 도착할 때마다 방향을 바꿔주어야 하고, 이후 같은 방향에 배치할 때 한 칸 차이나는 곳에서 시작해야 하므로 시작행/시작열/종료행/종료열을 저장하는 변수가 필요
- 마지막 배치된 숫자는 n의 제곱보다 1 작은 수이므로 count가 n 이하인 동안 반복한다.
- 우측으로, 아래로 움직일 때에는 인덱스가 1씩 증가하면 되지만, 좌측으로, 위로 움직일 때는 인덱스가 감소(-1씩 증가)해야 하므로 range에서 -1씩 step을 준다.