(Python, Java) 프로그래머스 - 약수의 합
in Algorithm on Programmers, Level1
[문제 링크]
Python 풀이 1
def solution(n):
return sum([x for x in range(1,n + 1) if n % x == 0])
print(solution(12))
Python 풀이 2
import math
def solution(n):
answer = 0
half = int(math.sqrt(n))
for i in range(1, half + 1):
if n % i == 0:
answer += i
answer += n // i
if half ** 2 == n:
answer -= half
return answer
다소 길지만 복잡도 면에서는 훨씬 낫다.
Java 풀이
class Solution {
public int solution(int n) {
int answer = 0;
for (int i = 1; i <= (int) Math.sqrt(n); i++) {
if (n % i == 0) {
if (n / i == i) {
answer += i;
} else {
answer += i + n / i;
}
}
}
return answer;
}
}