middlemoon

[입문]자바 - 자릿수 더하기 본문

Algorithm/프로그래머스 Java 입문

[입문]자바 - 자릿수 더하기

중대경 2025. 8. 27. 21:49

 

 

 

답안 ) 

 

class Solution {
    public int solution(int n) {
        int answer = 0;
        String str = String.valueOf(n);
            
        for(char c : str.toCharArray()){
            answer += c - '0';
        }
        System.out.println(answer);
        return answer;
    }
}

 

 

 

 

과정 ) 

 

처음 고민했던 부분은 배열로 활용하여 n에 들어간 수를 합하려는 생각을 갖고있었다.

안타깝게도 파라미터는 이미 배열이 아닌 정수형으로 선언이 되어있어 생각을 바꿔야만 했다.

 

물론 재귀함수나, Java Stream을 활용하여 만드는 방법도 있을 것인데, 가장 쉽다고 생각한 문자열로 변환하여 푸는게 나아보였다. 

우리는 n의 전체합을 구해야하기 때문에 배열에 있었다면 한번에 덧셈처리가 가능하였을 것이다.

하지만 우리는 정수에 모든 합을 구해야하기 때문에 배열처럼 가져올수 있는 기능이 필요했다.

 

그리하여 정수를 문자열로 변환 후,  문자 '0' 빼서 숫자로 변환을 하였다.

 

이 시간에 유니코드에 대해서도 자세하게 알게되었는데 자료와 같이본다면 이해가 쉽다.

 

왜 c - '0'을 쓰냐?

  • 자바에서 문자(char)는 사실 내부적으로 유니코드 정수 값으로 저장돼요.
  • 예를 들어:
문자정수 값(ASCII/Unicode)
'0' 48
'1' 49
'2' 50
'3' 51
... ...
'9' 57

즉, '3'이라는 문자는 실제로는 정수 51로 저장돼요.


예시

만약 c = '3'라면:

 
c - '0' = 51 - 48 = 3 // 우리가 원하는 실제 숫자

 

만약 c = '7'라면:

 
c - '0' = 55 - 48 = 7
 
 
이런식으로 나오게 되는 개념이다.
 
그리하여 각 유니코드에 해당하는 숫자들이 계산이 되어, 계산된 수들이 덧셈을 하여 정답이 나오게 된다. 
 
 
 
Comments