https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14eWb6AAkCFAYD

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

#문제 간단 정리

스택을 활용한 괄호 문제

 

#문제 해결 방법

map으로 좀 더 깔끔하게 짜고자 했다.

기존유형문제와 풀이 방법은 같다

 

#전체 코드

#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>
#include <map>
#include <string>
using namespace std;



int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    map<char, char> cache;
    cache[')'] = '(';
    cache[']'] = '[';
    cache['}'] = '{';
    cache['>'] = '<';

    for (int tc = 1; tc <= 10; tc++) {

        int n;
        cin >> n;

        string s;
        cin >> s;

        bool flag = true;

        vector<char> brackets;
        for (int i = 0; i < s.size(); i++) {

            if (s[i] == '(' || s[i] == '[' || s[i] == '{' || s[i] == '<') {
                brackets.push_back(s[i]);
            }
            else {
                if (brackets.empty()) {
                    flag = false;
                    break;
                }
                else if(cache[s[i]] == brackets.back())  {
                    brackets.pop_back();
                }
                else {
                    flag = false;
                    break;
                }
            }
        }


        if (!brackets.empty()) {
            flag = false;
        }

        if (flag) {
            cout << '#' << tc << ' ' << 1 << '\n';
        }
        else {
            cout << '#' << tc << ' ' << 0 << '\n';
        }

    }


    return 0;
}

+ Recent posts