오늘의하루

[프로그래머스 1단계 - JAVA] 약수의 합 본문

JAVA

[프로그래머스 1단계 - JAVA] 약수의 합

오늘의하루_master 2022. 9. 16. 10:58
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

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

풀이

class Solution {
    public int solution(int n) {
        int answer = 0;
        for(int i = 1; i <= Math.sqrt(n); i++){
            if(n % i == 0){
                answer = answer + i;
                int check = n/i;
                if( i != check){
                    answer = answer + check;
                }
            }
        }
        return answer;
    }
}

약수를 효율적으로 구하는 방법

  • 정수 10의 약수를 구해보자
    • 방법 1. 정수 1~10까지의 수로 10을 나눠서 나머지가 0인지 알아본다.
      • 결과 : 1, 2, 5, 10 
      • 실행 횟수 : 10번
    • 방법 2. 제곱근으로 나눠서 나머지가 0인지 알아본다.
      • 실행 1. 정수 1부터 10의 제곱근(3.16...)의 수로 우선 10을 나눠서 나머지가 0인지 알아본다.
        • 첫번째 결과 : 1, 2
      • 실행 2. 첫번째 결과로 10을 나눈다. (이 경우 나머지는 무조건 0이다.)
        • 두번째 결과 : 10, 5
      • 첫번째 결과와 두번째 결과를 합친 후 중복되는 값을 제거하면 모든 약수가 나온다.
      • 실행횟수 : 4번
Comments