[BOJ] 균형잡힌 세상

마코레·2022년 7월 24일
0

코테공부

목록 보기
19/19
#include <iostream>
#include <stack>
#include <map>

using namespace std;

bool isBalanced(string &s) {
    stack<char> st;
    map<char, char> m;
    //괄호 짝 미리 저장
    m[']'] = '[';
    m[')'] = '(';

    for (int i = 0; i < s.length(); i++) {
        switch (s[i]) {
            case '(': case '[': 
                st.push(s[i]);
                break;
            case ')': case ']': 
                if (st.empty() || st.top() != m[s[i]]) { 
                    return false;
                }
                st.pop();
                break;
        }
    }
    return st.empty(); 
}


int main() {
    string s;

    while (getline(cin, s)) {
        if (s == ".") {
            break;
        }
        if (isBalanced(s)) {
            cout << "yes\n";
        } else {
            cout << "no\n";
        }
    }
    return 0;
}
  • 매우 간단한 괄호 체크 문제!
  • 이퍼에서도 몇번 나왔던거로 알고있다.
  • 스택에 왼쪽 괄호를 넣고, 닫는 괄호가 나오면 스택에서 괄호를 빼는식!
  • 만약 스택에 괄호가 남아있거나, 암것도 없는데 괄호를 빼려고 하는경우 잘못된거고,
    잘 비워진 경우에는 성공한거로 판단해서 출력하면 된다!
profile
새싹 백엔드 개발자

0개의 댓글