[백준1541] 잃어버린 괄호 (C++)

유후·2022년 6월 23일
0

백준

목록 보기
65/66

요즘 게을러서 백준을 소흘히했다. 백준만 소흘히 한 건 아니고 공부도 소흘히 했다. 계속 틀어박혀 있어서 슬럼프 온 것 같아..

📌 문제

BOJ 바로가기

계산식에 괄호를 적절히 넣어서 계산 결과가 최솟값이 되도록 만들어야 한다.

ex) 50 - 10 + 30 -> 50 - (10 + 30) = 10

🔎 풀이

'-' 기호의 등장 여부를 확인해준 후, 등장했다면 그 뒤의 수에 모두 - 연산을 적용해주면 된다.

🥶 stoi함수를 사용할 때 주의점이 있다. stoi함수는 int 범위 내의 문자열을 int형 수로 변환해주기 때문에, 공백("")과 같은 문자열이 인자로 들어가면 예외를 throw한다. 이것 때문에 고생을 좀 했다..

🚩 소스코드

#include <iostream>
#include <ctype.h>
#include <string>
using namespace std;

int main() {
	ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    string s, num;
    int ans = 0;
    bool flag = false;
    cin >> s;
    // -가 나타나면 그 뒤의 값은 무조건 빼주기
    for(int i = 0; i <= s.size(); i++) {
        if (s[i] == '-' || s[i] == '+' || !s[i]) {
            if (flag)
                ans -= stoi(num);
            else
                ans += stoi(num);
            num = "";
            if (s[i] == '-') flag = true;
        }
        else // s[i]가 숫자
            num += s[i];
    }
    cout << ans;
}
profile
이것저것 공부하는 대학생

0개의 댓글