(구) solved ac class 문제들/class 1

[class 1]백준 숫자의 합(11720번) 풀이 (C++/Python)

isekaipudding 2026. 4. 16. 11:41

문제 : 숫자의 합(11720번)(Bronze IV)

문제 링크 : https://www.acmicpc.net/problem/11720
출처 : Baekjoon Online Judge

 

이 문제는 문자열의 크기 n을 입력하고 문자열로 이루어진 자리수들을 모두 다 더하는 문제입니다.

우선 C++ 소스 코드를 공개하고 설명 들어갑니다.

#include <bits/stdc++.h>
 
using namespace std;
 
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;

    string s;
    cin >> s;

    int result = 0;

    for(int i = 0; i < n; i++) {
        result += s[i] - '0';
    }

    cout << result;

    return 0;
}

우선 문자열의 크기 n과 문자열 s를 입력 받습니다.

그 다음 result = 0으로 선언하고 각 자리수들을 더하면 됩니다.

이 때 조심해야 할 것은 s[i]는 아스키코드(10진수)로 변환된 것이라서 만약 result += s[i]로 하면 다음과 같은 오류가 발생합니다.

[input]
5
54321
[output]
255
[answer]
15

문자 '1'은 10진수로 표현하면 49입니다.

그러므로 result += s[i]로 하면 49 + 50 + 51 + 52 + 53 = 255가 됩니다.

그러므로 문자 '0'(10진수로 표현하면 48)을 따로 빼줍니다.

문자 '1'와 문자 '0'을 빼면 49 - 48 = 1이 되어 실제 숫자 1이 나옵니다.

이렇게 해서 5 + 4 + 3 + 2 + 1 = 15가 나오게 됩니다.

 

Python에서는 문자열 크기 신경 안 써도 되므로 N는 장식입니다.

import sys

input = sys.stdin.readline

N:int = int(input().rstrip())
S:str = input().rstrip()

result:int = 0
for ch in S :
    result += int(ch)
    
print(result)

in 연산자를 통해 문자열 S의 문자들을 ch로 한글자씩 추출하고

int()를 통해 문자 '5'를 바로 숫자 5로 바꿔줍니다.

정말 편리한 Python입니다.