Post

Baekjoon17425-약수의 합

백준 사이트 17425 - 약수의 합 문제입니다.

1. 문제

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


2. Input , Output


3. 분류 및 난이도

코딩테스트 준비 - 기초 문제입니다.


4. 생각한 것들

  • 약수를 하나씩 구하면 당연히 시간초과가 날 것이라고 생각했습니다.
  • 나름 시간복잡도를 고려해서 여러가지 방법을 사용했습니다. O(nlogn)으로 줄였지만, 극한으로 더 줄여야했습니다. 결국 다른 블로그를 참조하였고 똑같은 O(nlogn)이지만 출력부분만 다른걸 봐서 출력부분에서 시간을 더 줄인것 같습니다.

5. code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
MAX = 1000000
dp = [1] * (MAX + 1)
s = [0] * (MAX + 1)

for i in range(2, MAX + 1):
    j = 1
    while i * j <= MAX:
        dp[i * j] += i
        j+=1
for i in range(1, MAX + 1):
    s[i] = s[i-1] + dp[i]

iter = int(input())
ans = []
for k in range(iter):
    n = int(input())
    ans.append(s[n])
print('\n'.join(map(str,ans)) + '\n')


6. 후기

  • 이게 골드4?
This post is licensed under CC BY 4.0 by the author.