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

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

문제

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

코드

class Solution {
    public int solution(int n) { ---(1)
        int answer = 0; ---(2)
        
        for(int i =1; i<=n; i++){ ---(3)
            if(n%i==0){
                answer += i;
                System.out.println(answer);
            }  
        }
        return answer;
    }
}

풀이 과정

(1) 정수 n을 인자로 받는다.
(2) answer 변수를 0으로 초기화한다.
(3) for문을 돌리기

  • 아래 if문에서 정수 n % i를 해 나눈 나머지가 0, 즉 약수가 되게끔 만들기 위해서
    i를 0으로 초기화시켰다.
  • 그리고 조건이 통과되면 answer변수에 i값을 더한다.

실패 했던 thinking

정수가 짝수나 홀수일 경우를 대비해 for문 안에서 if - elseif로 나눠 값을 처리하려고 하였다.
그런데, 그렇게 하면 for문을 돌면서 n%i를 했을 때 0으로 나오던, 1로 나오던 다 더해서 값이 예상했던 값과 다른 값들이 나오게 되었다.

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

그래서 else if로 지웠더니 값이 잘 나왔다.

좋은 웹페이지 즐겨찾기