*약수의 합 #include <iostream> using namespace std; int solution(int n) { int answer = 0; /**case1*/ O(n) for(int i = 1; i <= n; i++) { if(n % i == 0) answer += i; } /**case2*/ O(logn) for(int i = 1; i * i <= n; i++) { if(n % i == 0) answer = answer + i + n/i; if(i * i == n) answer = answer - i; } return answer; } | cs |
::public/코딩테스트 풀이