상세 컨텐츠

본문 제목

< 백준 BaekJoon : 11720번 숫자의 합 > C++

C++/Baekjoon

by J2on 2021. 10. 1. 20:11

본문

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

 

11720번: 숫자의 합

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

www.acmicpc.net

숫자들이 예의없이 공백도 없이 붙어있는, 사실상 큰 숫자 하나를 입력받아서 각 자릿수의 합을 더하는것과 같다.

 

그런데 문제는 input인 숫자의 자릿수가 최대 100이라는 것이다. 

때문에 long long 까지 해봐야 이 큰 숫자를 감당할 수 없다.

 

그래서 이 숫자를 char형으로 각각 하나씩 입력받는 방법을 사용한다.

 

1) char형 변수에 입력 → int형으로 변환(ASCII 코드) → 0~9는 ASCII에서 48~57이기 때문에  48씩 빼서 더해준다.

 

<<코드>>

#include <iostream>
using namespace std;

int main() {
  //ASCII CODE 48~57 : 0~9
  int num;
  int result=0;
  cin >> num;
  int* numList = new int[num];
  
  char ch;
  for (int i =0; i < num; i++){
    cin >> ch;
    numList[i] = ch;
  }

  for(int k =0; k < num; k++){
    result += (int(numList[k])-48);
  }
  cout << result << "\n"; 

  delete[] numList;
}

아슼히 코드가 참 유용하네

관련글 더보기

댓글 영역