티스토리 뷰

https://programmers.co.kr/learn/courses/30/lessons/12928

 

코딩테스트 연습 - 약수의 합

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수

programmers.co.kr

 

[문제 풀이]

 

1. 약수는 항상 쌍으로 존재한다.

2. 약수 중 가장 큰 수는 제곱근이므로 제곱근까지 약수를 구한 후, 나머지 쌍을 구한다.

3. 구한 쌍의 합을 구한다.

 

[소스 코드]

 

public class SumOfDivisor {
    public static void main(String[] args) {
        int n = 5;

        System.out.println(solution(n));
    }

    private static int solution(int n) {
        boolean[] check = new boolean[n + 1];
        int answer = 0;

        for (int i = 1; i * i <= n; i++) {
            if (n % i == 0) {
                check[i] = true;
                check[n / i] = true;
            }
        }

        for (int i = 1; i <= n; i++) {
            if (check[i]) {
                answer += i;
            }
        }

        return answer;
    }
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함