💡 시간 초과를 잘 신경 쓰도록 하자 (1초는 1억번까지 가능)

<시간 초과 발생 코드>
total = 0
for i in range(1,N+1):
for j in range(1,i+1):
if i % j == 0:
total += j

<풀이 코드>
# for문을 1번쓰는 경우
# 각 배수들이 총 몇번 들어가는지 생각하자
for i in range(1,N+1):
total += i * (N//i)
풀이 방법
1. 각 숫자 T들은 항상 T의 배수의 약수로 들어간다.
2. 따라서 N이 주어지면 각 숫자들이 N에 몇번 들어가는지를 계산해주면 된다.
N = 10
1의 배수 = 10 // 1 = 10번
2의 배수 = 10 // 2 = 5번
3의 배수 = 10 // 3 = 3번
4의 배수 = 10 // 4 = 2번
5의 배수 = 10 // 5 = 2번
6의 배수 = 10 // 6 = 1번
7의 배수 = 10 // 7 = 1번
8의 배수 = 10 // 8 = 1번
9의 배수 = 10 // 9 = 1번
10의 배수 = 10 // 10 = 1번
따라서, 모든 약수의 합은 i * (N // i)의 합과 동일하다.
정말.. 이런 생각을 못하는게 슬프다.. 눈물..🥲