본문 바로가기
Programming Solve/프로그래머스

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

by msm1029 2022. 2. 16.
반응형

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12909

 

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

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

programmers.co.kr

 

 

문제 풀이

스택으로 풀이한다.

왼쪽 괄호를 push, 오른쪽 괄호를 pop이라고 생각하면 된다.

만약 왼쪽 괄호가 열리지도 않았는데 오른쪽 괄호가 닫힌다면 스택이 비어있는데 pop하는 것이므로 false를 리턴해준다.

 

for문이 끝났을 때는 스택이 비어있어야 왼쪽 괄호와 오른쪽 괄호의 수가 일치하는 것이므로 비어있다면 return true, 아니라면 false를 리턴한다.

 

 

소스 코드

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

bool solution(string s)
{
    bool answer = true;
    stack<char> st;
    
    for(int i=0; i<s.size(); i++){
        if(st.empty() && s[i] == ')') return false;
        else if(s[i] == '('){
            st.push('(');
        }
        else st.pop();
    }
    
    if(!st.empty()) return false;

    return answer;
}
반응형