알고리즘/프로그래머스

자릿수 더하기(JAVA)

mrban 2022. 1. 18. 21:42

1. 문제

자연수 N을 매개변수로 받아, N의 각 자릿수의 합을 구해서 return 하는 함수를 만드시오.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 한다.

 

2. 제한
N의 범위 : 100,000,000 이하의 자연수

 

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

4. 설명

4-1. Math.log10()을 통해 입력받은 자연수 n에 로그값을 씌워서 나온 값에 1을 더하고 int형변환을 해주면 n의 자릿수가 나온다. 예를 들어 Math.log10(1000)은 3이고 여기에 1을 더하면 4가 나와 자릿수를 구할 수 있다.

4-2. for문을 자연수 n의 자릿수만큼 돌리면서 n을 10으로 나눴을 때의 나머지 부분이 n의 일의자리 값과 같다라는 점을 이용하여 n을 10으로 계속 나눠주면서 일의자리 값을 계속 떼어내어 answer에 더해준다.

4-3. 예를 들어 n이 123이면 123 % 10 = 3을 answer += 3하고 n은 123 / 10 = 12로 바꿔준다. 이걸 반복하는 것이다.

4-4. 자릿수를 다 더한 answer값을 return한다.