흰 스타렉스에서 내가 내리지

[BOJ] 17427번 약수의 합 2 본문

Problem Solving

[BOJ] 17427번 약수의 합 2

주씨. 2022. 1. 15. 15:48
728x90

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

 

 

시간제한이 0.5초에 데이터의 범위는 1,000,000 이하이므로 O(n) (=약수를 하나하나 구하는것)은 시간초과가 난다.

 

1~n 의 수 중에서 1을 약수로 가지는 수는 n개, 2를 약수로 가지는 수는 n/2 개 ... 라는 것을 이용해야 한다.

 

N = int(input())

ret = 0
for i in range(1, N+1):
    ret += i*(N//i)
    
print(ret)

 

비록 간단해보이고 짧은 코드지만, 알고리즘을 생각해내는게 쉽지 않았다.

'Problem Solving' 카테고리의 다른 글

[BOJ] 14500번 테트로미노  (0) 2022.01.22
[BOJ] 1107번 리모컨  (0) 2022.01.20
[BOJ] 1655번 가운데를 말해요  (0) 2022.01.10
[BOJ] 2668번 숫자고르기  (0) 2022.01.07
[BOJ] 1806번 부분합  (0) 2022.01.05