본문 바로가기
Algorithm/BOJ

[백준/BOJ] 4949번 - 균형잡힌 세상 (C++)

by shine-jung 2022. 3. 24.
반응형

문제 링크


코드

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

int main(void) {
    ios::sync_with_stdio(0);
    cin.tie(0);
    string line;
    while (1) {
        getline(cin, line);
        if (line == ".") break;
        int bal = 1;
        stack<char> ST;
        for (auto c : line) {
            if (c == '(' || c == '[') ST.push(c);
            else if (c == ')') {
                if (ST.empty() || ST.top() != '(') {
                    bal = 0;
                    break;
                }
                ST.pop();
            }
            else if (c == ']') {
                if (ST.empty() || ST.top() != '[') {
                    bal = 0;
                    break;
                }
                ST.pop();
            }
        }
        if (ST.empty() && bal == 1) cout << "yes\n";
        else cout << "no\n";
    }
}



설명


스택을 사용해서 해결할 수 있다.

여는 괄호가 나오면 스택에 저장하고 닫는 괄호가 나오면 top에 있는 괄호와 쌍이 맞는지 확인한다.

쌍이 맞지 않거나 문자열 순회가 끝났는데 스택이 비어있지 않으면 해당 문자열은 균형을 이루고 있지 않다.




(주의) 기록용으로 작성한 글입니다. 좋은 코드가 아닐 수 있습니다.

댓글 환영합니다!


반응형

댓글