문제풀이(Problem Solving)

백준, BOJ, 1541번 C++ [CPP]

게임이 더 좋아 2021. 6. 10. 01:30
반응형
728x170

문자열을 입력받아서 처리하는 것이다.

시간도 널널하다.

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

 


 

 

#맞는 풀이

#include<iostream>
#include<string>

using namespace std;


string s = "";

bool check = false;

int main() {
    cin >> s;
    string temp = ""; // 연산을 할 문자열.
    int sum = 0;
    bool check = false; //-출현체크
    bool init = false;

    for (char c : s) {
        if (c == '+') {
            int a = stoi(temp);
            if (check) {
                sum -= a;
            }
            else {
                sum += a;
            }
            temp.clear();
        }
        else if (c == '-') {
            int a = stoi(temp);
            if (check) {
                sum -= a;
            }
            else {
                sum += a;
            }
            check = true;
            temp.clear();
        }
        else {
            temp += c;
        }
    }

    //마지막숫자
    int a = stoi(temp);
    if (check) {
        sum -= a;
    }
    else {
        sum += a;
    }

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

 

-가 출현한다면 그 뒤에 것들은 부호에 상관없이 다 sum에서 빼주면 된다.

-가 출현하지 않았다면 그 앞에 것들은 다 더해준다.

 

숫자를 몇개 넣으면 발견하게 되고

그것을 bool check로 잘 조절하면 된다

temp는 for문 밖에서 선언했으니 쓸 때마다 초기화 시켜주는 것을 잊으면 안된다.

 

728x90
반응형
그리드형

'문제풀이(Problem Solving)' 카테고리의 다른 글

백준, BOJ, 1037번 C++ [CPP]  (0) 2021.06.10
백준, BOJ, 13305번 C++ [CPP]  (0) 2021.06.10
백준, BOJ, 10844번 C++ [CPP]  (0) 2021.06.09
백준, BOJ, 1904번 C++ [CPP]  (0) 2021.06.09
백준, BOJ, 14889번 C++ [CPP]  (0) 2021.06.09