(Python, Java) 프로그래머스 - 약수의 합

[문제 링크]

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;
    }
}

© 2021. By Backtony