[알고리즘] 백준 4949

dlwl98·2022년 5월 24일
0

알고리즘공부

목록 보기
21/34
post-thumbnail

백준 4949번 균형잡힌 세상

해결 과정 요약

입력값으로 들어오는 괄호가 아닌 문자는 모두 무시하고
괄호가 들어오면 스택의 맨 위를 확인해서 들어온 괄호문자와 짝이 지어지는지 확인한다.
짝이 맞다면 pop후 push는 안한다.
짝이 맞지 않다면 push만 한다.
마지막 문자까지 확인 후 스택에 값이 남아있다면 "no", 남아있지 않다면 "yes"를 출력해준다.
위와 같은 로직으로 "."이 입력될 때까지 반복해준다.

풀이

#include <bits/stdc++.h>
using namespace std;

string s;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    
    while(true){
        getline(cin, s);
        if(s == ".") return 0;
        stack<char> st;
        for(int i=0; i<s.size(); i++){
            if(s[i] == '[' || s[i] == ']' || s[i] == '(' || s[i] == ')'){
                if(st.size()){
                    if(st.top() == '[' && s[i] == ']') { st.pop(); continue; }
                    if(st.top() == '(' && s[i] == ')') { st.pop(); continue; }
                }
                st.push(s[i]);
            }
        }
        if(st.size()) cout << "no\n";
        else cout << "yes\n";
    }
    return 0;
}

코멘트

스택을 생각하기도 쉬웠고 구현도 간단했다.

0개의 댓글