[BOJ] 10799 쇠막대기

kante·2020년 9월 15일
0

BOJ

목록 보기
1/1
post-custom-banner

스택에 쌓인 '('의 개수가 2개 이상일 때 "()"가 나오면 pipe 갯수를 더해줬다(왼쪽) 그리고 )가 연속해서 나오면 마지막 남은 1개를 더해줬다.
스택 문제라 그렇게 어렵지는 않았다.

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

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    string str;
    cin >> str;
    int result = 0;
    
    stack<char> s;
    
    int pipe = 0;
    char last;
    for(auto c : str){
        if(s.empty()){
            s.push(c);
            pipe = 0;
            last = '(';
        }else{
            if(c == '('){
                if(last == '('){
                    pipe ++;
                }
                s.push(c);
                last = '(';
            }else{
                if(pipe>0 && last == '('){
                    result+=pipe;
                }else{
                    if(pipe>0)result+=1;
                    pipe --;
                }
                s.pop();
                last = ')';
            }
        }
    }
    
    cout << result;
    
    return 0;
}
profile
경험많은 개발자가 되자
post-custom-banner

0개의 댓글