프로젝트 오일러 028
나선모양 행렬의 대각선 원소의 합
문제
쉬움주의
솔직히 이 문제는 1번만큼이나 쉬운 문제인데 왜 28번 타이틀을 달고 있는지는 알기 어렵습니다.
1부터 시작해서 나선을 따라 어떻게 움직이는지 관찰해보면 다음과 같은 규칙을 발견할 수 있습니다.
- 방향을 두 번 바꾸고 이동할 때마다 대각선 원소(빨간색)에 도착합니다.
- 대각선 원소에 네 번 도착한 후에는 이동하는 거리가 2씩 더 늘어납니다.
- 한 변의 길이가 1,001이 되기 위해서는 500바퀴를 돌면 됩니다.
이상의 규칙을 적용하여 다음과 같이 계산하면 됩니다.
a, s, k = 1, 1, 2
for _ in range(500):
for _ in range(4):
a += k
s += a
k += 2
print(s)