코딩하는 덕구 🐶

42. C++ 백준 11720 번 숫자의 합 본문

알고리즘 문제 풀이

42. C++ 백준 11720 번 숫자의 합

코딩하는 덕구 🐶 2022. 1. 25. 13:14
728x90
반응형

안녕하세요! 코딩하는 덕구입니다!

정수를 문자열로 입력받는 문제인 C++ 백준 11720 번 입니다!

문제

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

입력

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

출력

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

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

 

11720번: 숫자의 합

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

www.acmicpc.net

 

제 코드입니다!

#include <iostream>
#include <string>
using namespace std;
int main(){
    int N, sum = 0;
    string word;
    cin>>N>>word;
    
    for(int i = 0; i<N; i++)
        sum = sum + word[i] - '0'; //문자형 숫자를 숫자로 변환하고 합함

    cout<<sum;
    return 0;
}

 

먼저 string 을 쓰기위해 #include<string> 을 해주었고

string 형식의 문자열은 배열처럼 단어 하나씩 접근할 수 있습니다!

예를 들어 string "12345";

string[0] == 1 이렇게요!

 

다만 숫자를 문자 형식으로 입력 받았기 때문에 각 문자들을 더하려면 숫자로 변환해주어야 되는데

 

그냥 문자 +(아무 연산) 숫자 해주면 숫자로 변합니다!

문자는 각 아스키에 맞게 숫자로 변하죠!

 

예를들어 '0' - '0'(아스키 넘버 빼줌) 이 연산을 하면

문자 형식의 0이 숫자 0 이 되겠죠! 같은 숫자끼리 빼니까

문자 0 의 (숫자 0 아님) 아스키가 기억은 안나지만 0~9까지 아스키도 1 씩 증가를 하므로

'1' 을 숫자 1로 변환 시키려면 '1' - '0' 해주면 되겠죠!

 

그래서 word[i] - '0' 연산이 나온겁니다! 

그럼 이 숫자들을 다 더해서 출력만 하면 됩니다!

 

C++ 백준 11720 번 이었습니다! 감사합니다~!

728x90
반응형