[백준/C++] 10823 - 더하기 2

orangesnail·2025년 8월 14일

백준

목록 보기
140/169

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


구현하기

이 문제처럼 어떤 조건이 주어질 때 종료할지가 명시적으로 주어지지 않은 경우에는 while (cin >> s) 문을 이용하면 된다. 이렇게 하면 EOF까지 반복해서 cin에서 문자열 s를 공백, 줄바꿈 단위로 끊어 읽는다.

for (char c : s) 를 통해 s 문자열에 있는 모든 문자를 차례대로 꺼내서 c에 저장하는 걸 반복할 수 있다.

현재 문자가 콤마일 때까지 숫자를 받아서 그대로 n 문자열에 저장해준다. 이때 숫자를 숫자의 뒤에 연결해서 붙이는 방식으로 저장해주기 위해 push_back() 을 사용한다. 현재 문자가 콤마라면 n에 지금까지 저장된 숫자를 실제 정수로 바꿔서 sum에 더해준다.

마지막에는 콤마가 등장하지 않으므로 마지막 숫자는 따로 처리해줘야 한다. while문이 끝난 이후 n이 empty하지 않은 경우에 다시 한번 n에 들어있는 숫자를 정수로 변환해 sum에 더해준다.

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

int main() {
    string s, n;
    int sum = 0;

    while (cin >> s) {
        for (char c : s) {
            if (c == ',') {
                sum += stoi(n);
                n.clear();
            }
            else n.push_back(c);
        }
    }

    if (!n.empty()) sum += stoi(n);
    cout << sum << endl;
    
    return 0;
}
profile
초보입니다. 피드백 환영합니다 😗

0개의 댓글