본문 바로가기
코딩테스트

[프로그래머스] 자릿수 더하기 - 자바

by DevJR 2020. 10. 13.

문제는.. 여기에서 확인

programmers.co.kr/learn/courses/30/lessons/12931

 

코딩테스트 연습 - 자릿수 더하기

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출

programmers.co.kr


입출력 예 >

N answer
123 6
987 24

 

요지는 자연수 N 값이 주어졌을 때, 각 자리수의 합을 구해서 return 하라는 것이다.

나는 아래와 같이 풀었다.

 public int solution(int n) {
        int answer = 0;
        String [] strValues = String.valueOf(n).split("");
        for (String value : strValues) {
            answer += Integer.parseInt(value);
        }
        return answer;
    }

그런데 다른 사람의 풀이를 보니

굳이 불필요한 형변환은 필요 없었던 것 같다..ㅜㅠ

 

 public int solution(int n) {
        int answer = 0;
        while (n > 0) {
            answer += n % 10;
            n = n / 10;
        }
        return answer;
    }

풀이 : n을 % 10 하면 10으로 나눈 나머지 값이 나오게 되는데, 예를 들어 123을 10으로 나눈 나머지는 제일 끝자리인 3이 된다. 이 값을 더하고, 그 다음 n을 10으로 나누면 그 값이 12가 된다. 그리고 while문을 돌아서 다시 12가 된 값을 10으로 나눈 나머지는 2가 된다. 이걸 또 더하고 n이 12일때, 10으로 나누면 n은 1이 된다. 다시 또 while문을.. ㄷㄷㄷ

 

표로 정리했다..

answer n n%10 n/10
3 123 3 12
5 12 2 1
6 1 1 0

즉 while문이 돌 때마다 1의 자리수부터 차례로 떼어져서 더해지는 걸 확인할 수 있다.