Spicy Tuna Sushi
본문 바로가기
문제를 풀자

[프로그래머스] 올바른 괄호(C++)

by 말린malin 2022. 8. 16.

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

 

프로그래머스

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

programmers.co.kr

스택을 이용하는 문제!

'('를 만나면 스택에 넣어주고,

')'를 만나면 스택에서 팝 해주면 된다! 이때, 만약 스택이 비었다면 짝이 될 '('이 부족한 것이므로 answer=false로 바꾸고 반복문을 빠져나온다.

 

반복문이 끝났는데도 스택이 비지 않았다면, '('이 많은 것이므로 answer=false로 바꾼다.

#include<string>
#include <iostream>
#include <vector>
#include <stack>

using namespace std;

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

댓글