[Java] 자릿수의 합을 구하는 방법
how to extract the last digit
[Java] 자릿수의 합을 구하는 방법
오늘은 자연수 N의 각 자릿수의 합을 구하는 문제를 풀었다. 문제는 다음과 같다:
문제 설명 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수
🤔 처음엔 어떻게 접근할지 몰랐다
처음엔 숫자의 각 자릿수를 어떻게 가져올지 몰랐다. Array나 List처럼 인덱스로 접근할 수 있는 구조도 아니고, charAt()은 String에서만 가능한 메서드라는 점이 고민을 더했다. 숫자를 String으로 변환해서 접근하는 방법도 생각했지만, 성능이 떨어질 수 있다는 우려가 들었다.
마지막 자릿수는 어떻게 구할까?
검색을 통해 알게 된 사실: 숫자에서 마지막 자릿수를 구하려면 num % 10을 사용하면 된다! 왜 10으로 나누는 걸까? 우리가 사용하는 10진법의 특징 때문이다. 숫자가 0~9 사이일 경우 10진수에서 자릿수마다 10을 기준으로 나누는 것이 자연스럽다. 예를 들어
- 123 % 10 → 3 (마지막 자리)
- 123 / 10 → 12 (마지막 자릿수 제거)
이러한 방식으로 반복하면 숫자의 모든 자릿수를 하나씩 접근할 수 있게 된다.
최종 해결 코드
1
2
3
4
5
6
7
8
9
public int solution(int n) {
int answer = 0;
while (n > 0){
int digit = n % 10;
answer += digit;
n /= 10;
}
return answer;
}
문제에서는 입력값이 1억 이하의 자연수라고 나와 있었지만 이 코드는 모든 테스트 케이스를 통과했다! 물론 완전히 깔끔한 코드라고 할 수는 없지만 초반에는 충분히 괜찮은 접근이었다고 생각한다.
This post is licensed under CC BY 4.0 by the author.
