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

Walter Mitty·2022년 10월 13일
0

Algorithm

목록 보기
13/29

문제 설명

정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요


제한사항
0 ≤ n ≤ 1,000,000


입출력 예

nresult
123410
93021116

입출력 예 설명

입출력 예 #1

  • 1 + 2 + 3 + 4 = 10을 return합니다.

입출력 예 #2

  • 9 + 3 + 0 + 2 + 1 + 1 = 16을 return합니다.

나의 풀이

class Solution {
    public int solution(int n) {
        int sum = 0;
        while(n>10) {
            sum += n%10;
            n /= 10;
            
            if(n<10) {
                sum += n%10;
            }
        }
        return sum;
    }
}

한번 더 생각해보기

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

한번더 생각해 봤을 땐, n > 10 이 아니라, n > 0 이라고 설정해주면 된다. 그럼 if문을 돌 필요가 없으니까! (왜 10이라고 했을까..)

그리고 오랜만에 while 문을 사용해봤는데 확실히 문제를 풀려고 사고하면서 짜다보니까 여러가지 반복문을 써 볼 수 있어서 재밌기도하고 좋은 것 같다.


다른 사람 풀이

class Solution {
    public int solution(int n) {
        int answer = 0;
        String[] s = Integer.toString(n).split("");
        for(int i=0; i<s.length; i++){
            answer += Integer.parseInt(s[i]);
        }

        return answer;
    }
}

이 생각도 해봤었는데, 형변환 방식에 익숙하지가 않아서 조금 주저했던 것 같다. 그래서 처음엔 while으로 풀자고 생각했고, 분명 String 배열로 만들어서 하나하나 빼준 방법이 있을 거라 생각했는데 역시나 다른 사람 풀이에 있었다!

포인트는 Integer.toString으로 정수를 문자로 형변환을 해주고, .split으로 숫자로 쳤을 때 각 자리수를 따로 따로 나누어주고 for문을 돌린다음에 그걸 다시 .parselInt로 형변환을 해주어 각 숫자들을 하나씩 꺼내어 더해주는 방법이었다.

2개의 댓글

comment-user-thumbnail
2022년 10월 13일

풀이가 차근차근 눈에 잘들어 오는 것 같아요. 잘보고 갑니다.

답글 달기
comment-user-thumbnail
2022년 10월 13일

여러가지 방식으로 생각하고 다른 사람 풀이와 비교해서 더 나은 풀이 방법을 찾는 것이 좋은 것 같아요! 오늘 하루도 고생했습니다!

답글 달기