Hueestory

[1541] 잃어버린 괄호 (C++) 본문

PS(중단)/BOJ

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

히명 2024. 5. 16. 14:26
#include <iostream>
#include <string>

using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    string s; cin >> s;

    int ans = 0;
    bool isMinus = false;
    string tmp;

    for (int i = 0; i <= s.size(); i++) {
        if (s[i] == '-' || s[i] == '+' || i == s.size()) {
            if (isMinus)
                ans -= stoi(tmp);
            else
                ans += stoi(tmp);
            tmp = "";
        }
        else
            tmp += s[i];

        if (s[i] == '-') isMinus = true;
    }

    cout << ans;

    return 0;
}

 

식의 값을 최소로 만들려면 + 항 끼리 괄호로 묶어주면 된다

ex) 1 + 2 + 3 - 4 + 5 + 6 - 7 + 8 - 9 => (1 + 2 + 3) - (4 + 5 + 6) - (7 + 8) - 9

 

1. - 기호를 판별하기 위한 bool형 isMinus

2. 임시로 숫자를 저장할 string형 tmp

3. '-, +, s의 끝 부분' 세 조건 중 하나를 만족할 때, 음수면 ans에 tmp를 int형으로 변환해 더한다

4. 만약 위 조건을 만족하지 않으면 tmp에 숫자를 저장한다

 

'PS(중단) > BOJ' 카테고리의 다른 글

[1456] 거의 소수 (C++)  (0) 2024.05.21
[1929] 소수 구하기 (C++)  (0) 2024.05.16
[1931] 회의실 배정 (C++)  (0) 2024.05.14
[1744] 수 묶기 (C++)  (0) 2024.05.14
[1715] 카드 정렬하기 (C++)  (0) 2024.05.14
Comments