PRACTICE/JAVA

[백준] 11720번 | 숫자의 합

j1ngerhead 2025. 2. 18. 00:12

 

문제 링크

https://www.acmicpc.net/problem/11720

import java.util.*;

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

        // 숫자의 개수
        int n = sc.nextInt();
        
        // n개의 숫자를 문자열로 공백 없이 받기 
        String sNum = sc.next();
        
        // 문자열을 문자 배열로 변환
        char[] cNum = sNum.toCharArray();
        
        // n개의 숫자 합 구할 변수
        int sum = 0;
        
        // 각 문자를 숫자로 변환하여 합계 변수에 담는다.
        for(int i=0; i<cNum.length; i++){
            // 문자형 숫자를 실제 정수(int) 값으로 변환하는 부분!
            // 해당 문자의 아스키 코드 값에서 
            // '0'의 아스키 코드 값(48)을 빼서 
            // 실제 숫자로 변환하는 흐름!
            // ex ) '5' - '0'은 53 - 48 = 5가 된다.
            sum += cNum[i]-'0';
        }
        
        System.out.print(sum);
        
    }
}

 

정수의 합을 구하기 위해 문자열로 공백 없이 입력 받은 후 
문자 배열로 변환하여 각각의 숫자 문자를 정수로 변환하여 합계를 구했다.

 

아스키 코드에서 같은 의미의 문자와 숫자의 코드 값 차이는 48이다.

예) 문자 '1'은 아스키코드 값이 49이므로 숫자 1로 변환하려면

'1'-48 또는 '1' - '0'과 같이 연산하면 된다.

320x100