Programmers Review

[Lv 2] 올바른 괄호

hanseongbugi 2024. 6. 22. 21:26

https://school.programmers.co.kr/learn/courses/30/lessons/12909

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

이 문제는 스택을 사용하면 해결할 수 있다.

문자열의 끝이 ')'인 경우 스택에 삽입한다.

혹은 '('인 경우 스택을 확인한다. 만약 스택이 비어있다면 올바르지 않은 괄호로 판단한다.

스택이 비어있지 않은경우 스택의 top이 ')'인지 확인한다. 만약 ')'이 아니면 올바르지 않은 괄호로 판단한다.

 

문자열을 모두 순회한 후 스택이 비어있지 않다면 올바르지 않는 괄호로 판단한다.

 

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

bool solution(string s)
{
    bool answer = true;
    vector<char> v;
    
    while(!s.empty()){
        char c = s.back();
        s.pop_back();
        if(c == ')'){
            v.push_back(c);
        }
        else{
            if(v.empty())
                return false;
            else{
                char s = v.back();
                if(s == ')')
                    v.pop_back();
                else
                    return false;
            }
        }
    }
    if(!v.empty()) return false;
    
    return true;
}