개발인생/Altorithm

[알고리즘 기초 100제] 9. 각 자릿수 합 구하기

forri 2025. 3. 10. 22:20

✔️문제

- 입력된 수의 각 자릿수 합을 구하시오
- 1242
- 정답: 9


✔️정답

package _09_sumOfDigits;

public class Main {
  public static void main(String[] args) {
    int inputNum = 1242; // 1 + 2 + 4 + 2 = 9
    int sum = 0;

    // int를 String으로 변환
    String str = Integer.toString(inputNum);

    // 각 자리 숫자를 더함
    for (int i = 0; i < str.length(); i++) {
      sum += str.charAt(i) - '0'; // char를 int로 변환 -> 문자 '0'을 빼서 숫자로 변환
      // sum += Integer.parseInt(String.valueOf(str.charAt(i)));
    }

    // 출력
    System.out.println(inputNum + "의 각 자리 숫자의 합은 " + sum);
  }
}

※ '0'을 빼는 이유

더보기

1. 문자(char)와 숫자(int)의 차이

  • Java에서 숫자 1과 문자 '1'은 다르게 취급됨.
    • 숫자 1 (int 타입) → 그냥 1
    • 문자 '1' (char 타입) → '1'이라는 기호

다음과 같이 정수를 문자열로 변환한 후 개별 문자를 가져올 수 있음

String str = "1242";
char ch = str.charAt(0); // '1'
  • 이때 ch는 숫자 1이 아니라 문자 '1'

2. 문자도 내부적으로 숫자로 저장됨 (ASCII 코드)

컴퓨터는 문자를 ASCII 코드 값으로 저장

문자 ASCII 코드 값
'0' 48
'1' 49
'2' 50
'3' 51
'4' 52
  • 문자 '1'은 숫자 49로 저장되고, '0'은 48로 저장

3. '1' - '0'의 원리

문자에서 숫자를 추출할 때 '0'을 빼면 실제 숫자가 됨

char ch = '1';
int num = ch - '0';

이 코드에서

  • '1'의 ASCII 값 = 49
  • '0'의 ASCII 값 = 48
  • 따라서 '1' - '0' = 49 - 48 = 1

같은 방식으로

'2' - '0' = 50 - 48 = 2
'3' - '0' = 51 - 48 = 3
'4' - '0' = 52 - 48 = 4

 

정리

✅ 문자 '0'의 ASCII 값(48)을 빼주면 '0' ~ '9'를 숫자로 변환 가능
✅ '1' - '0' = 1, '2' - '0' = 2 같은 방식으로 변환하면 쉽고 빠름

package _09_sumOfDigits;

public class Main_Division {

  public static void main(String[] args) {

    int inputNum = 1232;
    int accNum = 0; // 각자리 숫자합 변수

    // 1232 => 123 => 12 => 1 (10으로 나누고 몫)
    // 2 3 2 1 (10으로 나누고 나머지) => 8

    while (inputNum > 0) {
      accNum += inputNum % 10;
      inputNum /= 10;
    }

    System.out.print(accNum);

  }
}
문자열을 더할때는 반복문으로 char로 만듬 -> str.charAt(i)-'0'
아스키코드65 -> 'A' | 아스키코드48 -> '0'