본문 바로가기
Coding Test

231006 자릿수 더하기 - Level 1

by mmm- 2023. 10. 6.

문제 설명

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

제한사항

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

 

입출력 예

 

입출력 설명

입출력 예 #1

  • 문제의 예시와 같습니다.

입출력 예 #2

  • 9 + 8 + 7 = 24이므로 24를 return 하면 됩니다

코드

import java.util.*;

public class Solution {
    public int solution(int n) {
        int answer = 0;
        String num = String.valueOf(n);
        
        for(int i=0; i<num.length(); i++) {
            answer += Character.getNumericValue(num.charAt(i));
        }

        return answer;
    }
}

 

풀이

n을 문자열로 변환하여 num에 저장해준다. 반복문을 통해 num을 문자로 변환한 뒤 이를 정수로 변환해 answer에 더해준다.


다른 코드와 풀이

아래의 코드는 다른 사람들이 작성한 것들로, 내 코드와 비교, 참고하기 위해 가져왔다.

import java.util.*;

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

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

        return answer;
    }
}

n가 0이면 종료되는 반복문에서 n을 10으로 나눴을 때의 나머지를 answer에 더해준 후, 그 다음 자릿수(일의 자리 -> 십의 자리 -> 백의 자리 -> ...)를 더해주기 위해 10을 나눠준다.


import java.util.*;

public class Solution {
    public int solution(int n) {
        int answer = 0;
        int len = (int)Math.log10(n)+1;
        for(int i = 0; i < len; i++) {
            answer += n%10;
            n = n/10;   
        }
        return answer;
    }
}

Math.log10()는 밑이 10인 상용로그를 반환하기 때문에 +1을 해주면 해당 정수의 길이를 구할 수 있다. for문을 이용해 n을 10으로 나눈 나머지를 구해 answer에 더하고 n을 10으로 나눠 n에 저장해주는 것을 반복하다보면 자릿수를 더할 수 있다.