CODING TEST/baekjoon

#11720 - 숫자의 합

iamyuunzo 2025. 7. 9. 11:26

📌 문제 정보

- 문제 이름 : #11720번 - 숫자의 합

- 문제 링크: https://www.acmicpc.net/problem/11720

 

 

📌 문제 요약

- 핵심 조건: N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성

- 시간복잡도 제한: .

 

 

📌 최종 정답 및 풀이

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        String M = sc.next();

        int sum = 0;

        for (int i=0; i<N; i++) {
            char digit = M.charAt(i);
            int num = digit - '0';
            sum += num;
        }

        System.out.print(sum);
    }
}

<-- 풀이 요약 -->

- 숫자가 공백 없이 한 줄에 붙어 있다. -> 문자열로 읽고, 한 글자씩 잘라서 숫자로 바꿔 더해야 함.

- 흐름 : N 받음 -> 숫자를 문자열로 받음 -> for문으로 한 글자씩 숫자 변환 -> sum 누적 -> 출력

- int num digit - '0' 대신 Character.getNumbericValue(digit) 사용 가능.

 

 

<-- 다른 풀이 요약 -->

// 1 : 문자열 -> char 배열로 변환 (toCharArray()버전)
int sum = 0;

for (char ch : M.toCharArray()) {
    sum += ch - '0';
}

System.out.println(sum);

- 한 번에 문자 배열로 바꿔서 for-each문으로 순회할 수 있음. 

- charAt(i) 대신 toCharArray() + for-each : 인덱스 실수 줄어



📌 새로 배운 문법

<-- 이번 문제에서 새로 배운 Java 문법 정리 -->

-** digit & Character.getNumbericValue() **

- 문자 -> 숫자 다룰 때 알아두면 좋은 것.

- char vs String? : char은 문자 하나 ('5'), String은 문자열 ("5")

 

- digit 변수 : 문자 하나 저장할 때 쓰는 이름 (숫자 한 자리만 다룰 때)

- Character.getNumericValue(char ch) : 문자 ch를 정수로 바꿈 (아스키코드 몰라도 됨 -> 알파벳 같이 처리 및 의미 명확성)

// digit
String M = "54321";
char digit = M.charAt(0); // '5'


// 아스키코드 뺄셈
int num = digit - '0';   // '5'-'0' = 53 - 38 = 5

// Numeric
int num = Character.getNumericValue(digit); // 5

 

charAt(i) 문자열의 i번째 문자 꺼내기
digit - '0' 문자 → 숫자 (숫자 문자만)         => 문자 하나
Character.getNumericValue() 문자 → 숫자 (숫자/알파벳 다 처리 가능)           => 그 문자를 안전하게 숫자로

다시 꼭 풀기..!