728x90

문제

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

 

입력

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

 

출력

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

 

예제 입력 1 

1
1

 

예제 출력 1 

1

 

예제 입력 2 

5
54321

 

예제 출력 2 

15

 

예제 입력 3 

25
7000000000000000000000000

 

예제 출력 3 

7

 

예제 입력 4 

11
10987654321

 

예제 출력 4 

46

 

출처

  • 문제를 만든 사람: baekjoon
  • 데이터를 추가한 사람: jh05013

 

알고리즘 분류

  • 수학
  • 구현
  • 문자열

 

문제 출처

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

 

11720번: 숫자의 합

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

www.acmicpc.net

 


 

문제 해결 방법

  • 크기가 N인 char 형 배열을 동적 할당하여 생성한다.
  • 그리고 숫자를 입력받은 후, for 문을 사용하여 각 요소에 접근하여 int 형으로 변환한 값을 합한 값을 sum 변수에 넣는다.
    • char 형 숫자를 '0'으로 뺄 경우, int형 숫자를 얻을 수 있다.
      • 숫자 0~9의 아스키 코드 값은 48~57이다.
      • 문자 '0'(48)에서 문자 '0'(48)을 뺄 경우 0이 된다. 이런식으로 계속 계산해가면 문자 '9'(57)에서 문자 '0'(48)을 뺄 경우 9가 된다.
  • 최종적으로 sum 변수의 값을 출력한다.

 

코드

#include <iostream>
using namespace std;

int main() {
    cin.tie(NULL);
    cout.tie(NULL);
    ios_base::sync_with_stdio(false);

    int N, sum;

    cin >> N;
    
    char *ary = (char*)malloc(sizeof(char) * N);

    cin >> ary;

    sum = 0;
    for (int i = 0; i < N; i++) {
        sum += ary[i] - '0';
    }

    cout << sum << '\n';

    delete(ary);

    return 0;
}

 

채점 결과

 

참고

  • [단계별로 풀어보기] > [문자열]

 

728x90