Java 문제풀이 - 약수의 합

Minseol·2022년 8월 4일
0

프로그래머스 스쿨에서 Java 입문 강의의 마지막 실습으로 나온 문제이다.

다음은 내 코드이다.

class Solution {
  public int solution(int n) {
      int answer = 0;
      int lesser = 1;
      int more = 0;

      do {
          more = n / lesser;
          if (n % lesser == 0) {
              answer += lesser;
              if (lesser != more) {
                  answer += more;
              }
          }
          lesser++;
      } while (lesser < more);
      
      return answer;
  }
}

대다수의 풀이는 다음과 같다.

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;
  }
}

그런데 위의 내 코드는 정답으로 통과하지 못했다.

뭐가 문제인지 한참 찾아봤는데... 다른 velog 글에 그 이유가 적혀 있었다.

https://velog.io/@benomadwill/dailyalgo7

문제에 0 이상 3000 이하인 자연수라 적혀 있었기에.. 0도 처리를 해줘야 하는 것이었다.

그런데 0이 자연수인지..? 이건 솔직히 수학자가 아니라서 잘 모르겠지만, 확실한건 0의 약수는 없다는 것이다.

따라서 차라리 0을 넣으면 예외처리를 하도록 문제를 만들었으면 모를까... 0의 약수의 합이 0이라고 리턴을 하게 만들고 그거를 테스트케이스로 넣는거는 좀... 납득이 가지 않는다.

profile
귀여운 설이에양

0개의 댓글