곧죽어도 콛잉

[그리디 / BOJ 1541 / C++] 잃어버린 괄호 본문

Coding Test/C++

[그리디 / BOJ 1541 / C++] 잃어버린 괄호

코드진행형 2023. 8. 16. 14:30

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

 

1541번: 잃어버린 괄호

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다

www.acmicpc.net

 

진짜 .. 생각 한번만 제대로 하면 쉬운 문제인데 ...

 

 

 

이 문제는 다 필요 없고 마이너스가 한번이라도 나온다면, 그 이후의 값들은 그냥 전부 더해서 빼주면 된다.

이것만 알면 정말 쉽게 접근할 문제 ㅠㅠ 

이걸 모르면 인덱스 꼬이고 난리도 아니다..

#include <bits/stdc++.h>

using namespace std;
string s;
int len, res, tmp;
bool flag;

int main(){
    cin >> s;
    len = (int)s.length();
    
    
    for(int i = 0 ; i <= len ; i++){
        if(s[i] == '-' || s[i] == '+' || i==len){ // 식의 마지막, 혹은 연산자에 만날때
            if(flag){
                res-=tmp;
                tmp=0;
            }else {
                res+=tmp;
                tmp=0;
            }
            
            if(s[i]=='-') flag=true;
        }else{
            tmp*=10;
            tmp+= (s[i]-'0');
        }
    }
    
    cout << res << '\n';
    
    
}

 

 

Comments