본문 바로가기
프로그래머스

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

by 뿌비 2024. 7. 3.
728x90

🔥 문제 설명

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

🔥 입출력 예

N answer
123 6
987 24

🔥 입출력 예 설명

예시 1 :  문제의 예시와 같습니다.

예시 2 :  9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.


🔥 문제 풀이 과정

  1. 자연수 N이 어떤 값이든 값을 더하려면 값을 자르긴 해야 하는데 어떻게 잘라야 하나 … 고민했다
  2. N의 값이 123이라면 1+2+3 이렇게 자르면 되지만 1023이라면 10+2+3 이걸 어떻게 알 수 있을까?
  3. 그래서 N 나누기 10을 해서 나머지(%), 몫(/)의 값을 사용해 문제를 풀기로 했다
    1. while문을 사용해 n이 0이 되면 반복문을 빠져나가게 조건을 걸어주었다
    2. 자연수 N의 값이 123이라고 했을 때 맨 처음 while문으로 들어와서 n%10를 하게 되면 123%10의 나머지는 3 몫은 12가 되고 나머지는 answer 변수에 +=해주고 몫은 n에 대입해 준다
    3. 그렇게 3차까지 계산을 하면 몫이 0이 되기 때문에 while 문을 탈출하고 answer의 값은 6이 된다.

이해하면서 풀기 위해 노트에 적었다


🔥 코드

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

 


🔥 문제를 풀면서 헷갈렸던 부분

1 % 10을 했을 때 몫은 0.1이 되고 나머지가 나올 수가 없는 거 같은데 어떻게 나오지..? 순간 헷갈려서 찾아보았고 아래의 블로그를 보고 이해했다

https://www.todayhumor.co.kr/board/view.php?table=jisik&no=199659

이해에 도움이 된 댓글 중 하나이다.

나머지는 초등학교 때 소수의 개념을 안 배우고 자연수로만 계산할 때 나온 거죠. 몫과 나머지.

예를 들어 8 나누기 3 하면 몫이 2이고 나머지가 2죠.

1 나누기 2는 나눌 수가 없으므로 몫은 0이고 나머지가 1입니다.

728x90