PS

프로그래머스 - 올바른 괄호

728x90

programmers.co.kr/learn/courses/30/lessons/12909#

 

코딩테스트 연습 - 올바른 괄호

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 ()() 또는 (())() 는 올바른 괄호입니다. )()( 또는 (()( 는 올바르지 않은 괄호

programmers.co.kr

 

스택의 대표적인 기본 문제이다.

여는 괄호 '(' 가 들어오면 스택에 push 하고

닫는 괄호 ')' 가 들어오면 스택에서 pop 하되,

스택이 비어있지 않아야하며, 동시에 스택의 top 이 여는 괄호 '(' 여야만 짝을 맞춰서 pop 할 수 있다.

그렇지 않은 경우라면 닫는 괄호 ')' 를 스택에 push 한다

(짝을 맞춰서 pop 해야된다는것, 그리고 닫는 괄호 ')' 도 스택에 push 될 수 있다는 점에 유의)

 

- c++

 

#include <string>
#include <stack>
 
using namespace std;
 
bool solution(string s) {
    bool answer = true;
    stack<char> st;
    
    for (int i = 0; i < s.length(); ++i) {
        if (s[i] == '(') st.push(s[i]);
        else {
            if (!st.empty() && st.top() == '(') st.pop();
            else st.push(s[i]);
        }
    }
    
    if (!st.empty()) answer = false;
    
    return answer;
}
cs

 

728x90