[프로그래머스] 약수의 합

2020. 6. 19. 20:54프로그래머스/LEVEL 1

import java.util.*;

class Solution {
    public int solution(int n) {
        int answer = 0;
        
       for(int i=1; i<=n; i++){
           if(n%i==0){
               answer +=i;
           }
       }
       
        return answer;
    }
}

1. 그냥 1부터 n까지 돌면서 n을 나누어 떨어지게 하면 answer에 더해간다.

 

위의 코드는 n이 작기때문에 가능하다. 

class Solution {
    public int solution(int n) {
        int answer = n;
        
       for(int i=1; i<=n/2; i++){
           if(n%i==0){
               answer += i;
           }
       }
       
        return answer;
    }
}

1. answer을 n으로 시작하면 약수 1 과 대응되는 n을 이미 계산해준게 된다.

2. 2부터 약수를 찾는데 n을 제외한 모든 약수중 n/2보다 큰 약수는 없으므로 n/2까지만 찾아주면된다.