-- 예전 기록/BOJ

[ BOJ ] 11720 : 숫자의 합 ( BRONZE 4 ) / C, C++, Python, Java

rejo 2023. 9. 25. 13:09

문제

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

입력

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

출력

입력으로 주어진 숫자 N개의 합을 출력한다.

풀이 과정

공백없이 주어진 한 자리 숫자들을 전부 더한다. 다만 숫자 자료형에 공백없이 주어진 숫자들을 저장하는 것은 무리이므로, 문자열에 저장해서 한 글자씩 숫자를 따서 합을 계산한다.

다만, 문자열에 저장하는 것이기 때문에, 숫자로 계산하기 위해선 아스키 코드 이론을 이용해 문자 0을 빼서 계산해야 올바른 숫자 값을 얻을 수 있다. ( '3' - '0' = 3 )

C

#include <stdio.h>

char s[101];
int main(void) {
    int n;
    scanf("%d", &n);
    scanf("%s", s);
    
    int sum_value = 0;
    for (int i = 0; i < n; i++) sum_value += (s[i] - '0');
    
    printf("%d", sum_value);
    return 0;
}

C++

#include <iostream>
#include <string>
using namespace std;

int main(void) {
    int n; cin >> n;
    string s; cin >> s;
    
    int sum_value = 0;
    for (int i = 0; i < n; i++) sum_value += (s.at(i) - '0');
    
    cout << sum_value;
    return 0;
}

Python

n = int(input())
s = list(map(int, list(input())))
print(sum(s))

Java

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        sc.nextLine();
        String s = sc.nextLine();
        
        int sum_value = 0;
        for (int i = 0; i < n; i++) sum_value += (int)s.charAt(i) - '0';
        
        System.out.println(sum_value);
    }
}