공부/프로그래머스

[프로그래머스 Lv. 1] 자릿수 더하기 - JAVA

해니0 2024. 8. 4. 08:00

문제

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

import java.util.*;

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

        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
        System.out.println("Hello Java");

        return answer;
    }
}

제한사항

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

입출력 예

n answer
123 6
987 24

 

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

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


 

문제 풀이

분석

숫자를 문자열로 변환하거나, 수학적 계산을 통해 각 자릿수를 추출할 수 있음

숫자를 문자열로 변환하는 방법을 처음 생각했지만 수학적 계산이 더 간단하다.

주어진 숫자 N을 10으로 나눈 나머지를 통해 마지막 자릿수 구하기
N을 10으로 나누어 마지막 자릿수를 제거하기
이 과정을 N이 0이 될 때까지 반복하기 

 

내 소스코드

import java.util.*;

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

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

        return answer;
    }
}

 

다른 예시 1

import java.util.*;

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

        while(true){
            answer+=n%10;
            if(n<10)
                break;

            n=n/10;
        }

        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
        System.out.println("Hello Java");

        return answer;
    }
}

다른 예시 2

import java.util.*;

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

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

        return answer;
    }
}

 

추가로 고민 할 부분

while문은 True인 경우에 실행되는데 조건을 각자 다르게 했다.

디버깅 및 값 추적할때 while true같은 건 비추라는 댓글을 봤음


 

Lv.1  / Java / 연습문제

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges