시냅스

백준 boj 17427 - 약수의 합 2 (파이썬, python) 본문

알고리즘

백준 boj 17427 - 약수의 합 2 (파이썬, python)

ted k 2022. 2. 7. 18:45

https://www.acmicpc.net/problem/17427

 

17427번: 약수의 합 2

두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더

www.acmicpc.net

 

 

문제의 난도는 높지 않으나, 시간 초과를 고려해야 하는 부분이 까다롭다.

첫 시도에 2중 반복문을 활용하였으나, 당연히 실패...

하여 얻은 인사이트는

 

만약 10을 기준으로 한다면,

1 은 총 10번 등장하고 ((10 / 1) * 1),

2 는 총 5번 등장하고 ((10 / 2) * 2),

3 은 총 3번 등장하고 ((10 / 3) * 3),

4, 5 는 총 2번 등장하고 ((n (10) / i ( 4 ~ 5 )) * i ( 4 ~ 5 )),

6, 7, 8, 9, 10 은 총 1번 등장한다 ((n (10) / i ( 6 ~ 10 )) * i ( 6 ~ 10 )).

 

수식으로 정리하면

( n / i ) * i

이 된다.

 

코드

n = int(input())

result = 0
for i in range(1, n + 1):
    result += (n // i) * i
print(result)

 

Comments