본문 바로가기

Algorithm

[백준] 11720번 : 숫자의 합 구하기 - C/C++

728x90

 

 

문제 풀이 과정은 아래와 같다.

1. 숫자의 개수 N 입력

2. 공백 없이 N개의 숫자 입력

3. 문자열 --> 숫자형 변환

 

1번과 2번 과정은 쉽게 해결할 수 있을 것이다.

백준 11720번을 해결하는 핵심은 다음과 같다. 

 

문자열을 숫자형으로 변경하려면 아스키코드(ASCII)를 이해해야한다는 것이다.

아스키코드에서 같은 의미의 문자와 숫자의 코드값 차이는 48이다.

문자열 '1'은 아스키코드 값으로는 49 이기 때문에

숫자 1로 변환하기 위해서는 -48 혹은 -'0'의 연산이 필요하다.

 

필자는 -48 대신 -'0'을 선택했다.

아래는 str[i]를 정수로 계산하여 sum에 누적하는 방법의 코드이다.

sum += str[i]-'0';

 

 

전체 코드

#include <iostream>
#include <string>

//숫자의 합
using namespace std;

int main(){
    int n;
    cin >> n;

    string str;
    cin >> str;

    int sum = 0;

    for(int i = 0; i < str.length(); i++){
        sum += str[i] - '0';
    }

    cout << sum << '\n';
}

 

 

 

 

브론즈4 난이도의 문제였다.

이 문제의 핵심은 위에서도 언급하였지만

문자열을 숫자형으로 변환하는 것이었다.

 

다음 글에서 C++에서의 형 변환에 대해 다뤄보겠다.

 

 

 

 

 

 

더 좋은 풀이가 있다면 댓글로 알려주세요 !!

피드백 환영입니다☺️

728x90