(Java/자바) 프로그래머스 Lv1 - 자릿수 더하기

문제설명

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

 

  • 제한사항

N의 범위 : 100,000,000 이하의 자연수

 

  • 입출력 예
N answer
123 6
987 24

입출력 예 #1
문제의 예시와 같습니다.

 

입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.


Solution.java

 

내가 푼 풀이

자바스크립트로 푼 방식대로 풀어 for문을 이용해서 풀었습니다.

자바스크립트와 좀 다른점이 많아 문자를 정수로 변환한다던가 answer += Integer.parseInt(str[i]) 로 answer에 str의 i번째 값을 추가하는 방식을 사용하려했지만,

이 방법은 자바에서 먹히지 않아 .substring() 메서드를 이용해 answer에 값을 추가했습니다.

import java.util.*;

public class Solution {
    public int solution(int n) {
        int answer = 0;
        String str = Integer.toString(n);
        for (int i = 0; i < str.length(); i++) {
            answer += Integer.parseInt(str.substring(i, i+1));
        }

        return answer;
    }
}

 

 

 

while문을 사용한 풀이
import java.util.*;

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

        while (n != 0) {
            answer += n % 10;
            n /= 10;
        }

        return answer;
    }
}

다른 사람의 풀이를 참고해보니 java에서는 while문을 이용해 푸는 것이 훨씬 편해보였습니다.

 

✅ 이 코드를 n이 123이라고 가정하여 해석 해보자면 다음과 같습니다.

 

  1. n이 0이 될때까지 while문을 반복합니다.
  2. answer 에 n(123)을 10으로 나눈 나머지 값을 추가합니다 ( 123을 10으로 나눈 나머지는 3이 됩니다. )
    ▶ answer = 3 
  3. n (123) 을 10으로 나눈 값으로 저장합니다. ( 123을 10으로 나누면 12.3이 되지만 int (정수) 형이므로 12가 남습니다. )
  4. answer에 12를 나눈 나머지 값을 추가합니다. ( 12를 10으로 나눈 나머지는 2가 됩니다. )  
    answer = 5 ( 3 + 2 )
  5. n (12) 을 10으로 나눈 값으로 저장합니다. ( 12를 10으로 나누면 1.2가 되지만  int (정수) 형이므로 1이 남습니다. )
  6. answer에 n (1) 을 10으로 나눈 나머지 값을 추가합니다 ( 1을 10으로 나누면 나머지는 1이 됩니다. )
    answer = 6 ( 3 + 2 + 1 )
  7. n (1) 을 10으로 나눈 값으로 저장합니다. ( 1을 10으로 나누면 0.1 이지만  int (정수) 형이므로 0이 됩니다. )
  8. n이 0이 되었으므로 while문은 종료됩니다.
  9. answer의 결과를 반홥합니다. ( answer = 6 )