백준 11720_숫자의 합 [C++]
본문 바로가기
Algorithm/Python, C++

백준 11720_숫자의 합 [C++]

by liveloper jay 2022. 7. 4.

문제

 

 

풀이

 이 문제는 입력할 숫자의 자리수 N을 입력받고, N자리의 수를 공백없이 입력받아 각 자리의 수를 모두 더한 값을 출력하는 문제입니다. N 자리 수를 입력받아야 하기때문에 배열 arr[N] 으로 각 자리수를 입력 받아야하며, 숫자는 공백없이 입력받아야 하기 때문에 int 형의 배열이 아닌 char 형으로 하나의 숫자가 아닌 문자를 하나씩 입력받는다고 생각하면 쉽게 해결할 수 있습니다.

그 다음 입력받은 배열을 정수형으로 변환하는 과정이 필요합니다. 그래서 처음에는 입력받은 문자를 atoi, atoll등 숫자로 바꾸어 그 숫자를 한 자리씩 더하는 방식으로 진행하려 했으나, 수의 범위가 커지면 원하는 값이 출력되지 않는 상황이 발생하였습니다. 그것을 해결하기 위해 고민하던 중 이전에 풀었던 아스키코드를 이용하면 쉽게 해결할 수 있을 것이라 판단하였습니다.

아스키코드 표를 보시게 되면 아스키코드의 48~57번까지가 0~9 까지에 해당됩니다. 이것을 다르게 생각하여 9라는 숫자를 도출해내고 싶으면 9의 아스키코드 순번인 57번에서 0의 아스키코드 순번인 48을 빼주면 원하는 값인 9라는 숫자를 도출해 낼 수 있습니다. 

 

 

 

 

소스코드

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

int main(){
  int N;
  cin >> N;
  int sum=0;
  char arr[N];
  cin >> arr;
  for (int i = 0; i < N; i++)
  {
      sum+=arr[i]-'0';
  }
  cout << sum ;
}

 

'Algorithm > Python, C++' 카테고리의 다른 글

백준 2675_문자열 반복 [C++]  (0) 2022.07.05
백준 10809_알파벳찾기 [C++]  (0) 2022.07.04
백준 11654_아스키 코드 [C++]  (0) 2022.07.02
백준 1436_영화감독 숌 [C++]  (0) 2022.06.29
백준 7568_덩치 [C++]  (0) 2022.06.29

댓글