티스토리 뷰

반응형

문제

문제 출처

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

문제 설명

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

제한 사항

  • n은 0 이상 3000이하인 정수입니다.

입출력 예

n return
12 28
5 6

 

입출력 예 #1
12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.

입출력 예 #2
5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.

 

풀이

1. 제곱근까지 차례대로 n의 약수인지 확인한다.

2. 약수인 경우 몫과 함께 answer에 더한다. 이 수가 제곱근인 경우에는 나누는 값과 몫이 동일하므로 몫은 더하지 않는다. 

class Solution {
    public int solution(int n) {
        int answer = 0;
        int i = 1;
        //n의 제곱근까지 반복
        while (i <= Math.sqrt(n)) {
            //약수인 경우
            if (n % i == 0) {
                answer += i;
                //제곱근이 아닌 경우
                if (i != n/i)
                    answer += n/i;
            }
            i++;
        }
        return answer;
    }
}
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함