Algorithm/백준

[백준] 17427: 약수의 합 2

  • -
728x90

일단 문제 이해를 못했었다.. N이 2이 2일때 약수를 더했는데 어떻게 4가 나오지...? 이러고 있었다가 10에서 함수를 사용해 대입해보니,

 

g(10) = f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) + f(8) + f(9) + f(10)
g(10) = 1 + 3 + 4 + 7 + 6 + 12 + 8 + 15 + 13 + 18
g(10) = 87

이 도출되었다. 

 

처음에 이렇게 했다가O(n^2) 이라 첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 이 조건을 만족하지 못해서

a = int(input())
ans = 0

for i in range(1, a+1):
    for j in range(1, a+1):
        if i % j == 0:
            ans += j

print(ans)

10을 예시로 모든 약수를 적었더니, n / 1 의 나머지 뺀 값이 같아서 아래와 같이 도출하였다.

 

a = int(input())
ans = 0

for i in range(1, a+1):
    ans += (a // i) * i

print(ans)

 

'Algorithm > 백준' 카테고리의 다른 글

[백준] 6588: 골드바흐의 추측  (1) 2023.10.14
[백준] 1929번: 소수 구하기  (0) 2023.10.14
[백준] 1978: 소수 찾기  (1) 2023.10.11
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.