올바른 괄호

Falcon·2021년 1월 30일
1

programmers

목록 보기
8/27

🔒 문제

💭 생각의 흐름

전공자라면 보자마자 스택이 떠올랐어야 했을 문제
손코딩이 가능해야할 문제

실제 IDE상의 컴파일러, 디버거가 괄호를 검사하는 방식과 같다.
{(등 괄호를 열때는 스택에 넣고 나머지는 스택에 뺀다.
괄호를 열지도 않은 상태나 너무 많이 닫으면 (스택이 비어있으면) -> false
최종 상태에 스택이 비어있으면 모두 짝이 맞은 상태이므로 true


🔑 풀이

#include <string>
#include <stack>
using namespace std;

bool solution(string s)
{
    stack<char> bracketStack;

    for (char bracket : s) {
        if (bracket == '(') bracketStack.push(bracket);
        else if (bracketStack.empty()) return false;
        else bracketStack.pop();
    }

    return bracketStack.empty() ? true : false;
}
profile
I'm still hungry

0개의 댓글