[백준/C++] 11720번 숫자의 합

Dandyoung·2023년 10월 23일
0

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

입력으로 받은 N만큼 반복문을 돌려 각각의 자릿수를 합하면 쉽게 될거라 생각했지만,, 생각처럼 쉽지 않았다.

입력받은 숫자를 string이 아닌, int로 선언했다가 int의 범위를 넘어가는 입력일 때 예외가 발생하였다. ex) 11, 10987654321
그래서, long long으로 선언 후 #include <sstream> 헤더파일을 불러와, 아래와 같이 형변환을 해주었는데,

    int n;
    long long m;
    cin >> n >> m;
    stringstream ss;
    ss << m;
    string test = ss.str();

이것도 정답이 아니었다. 그리고 string에서 각각의 문자는 char이므로 stoi를 사용할 수 없었다..

string으로 받아서, char형을 아스키코드를 통해 간단히 int형으로 바꿔 더해주면 되었다.
참고 : https://stackoverflow.com/questions/5029840/convert-char-to-int-in-c-and-c

최종 솔루션

string의 각각의 인덱스에 접근하여, 각 인덱스 문자열의 값(char)를 아스키 코드로 변환하여 sum을 해주는 것이다.

#include <iostream>
#include <string>

using namespace std;

int main() {
    int n;
    string m;
    int sum = 0;
    
    cin >> n >> m;

    for(int i = 0; i < n; i++){
        int a = m[i] - '0';  
        sum += a;
    }
    
    cout << sum;
    return 0;
} 

무서운 이야기 : c++이 점점 재미있어진다..

profile
코딩이어려운당신에게,,

0개의 댓글