N

(프로그래머스 c++)올바른 괄호 본문

프로그래머스 알고리즘/2단계

(프로그래머스 c++)올바른 괄호

naeunchan 2020. 5. 19. 15:32
728x90
반응형

스택을 이용하여 올바른 괄호인지 판단하자..!

#include <stack>으로 하여 스택을 사용할 수 있게 하였다.

 

반복문을 s.size()만큼 돌면서 괄호를 스택에 넣어주도록 하였다.

s[i] == '(' 이면

stk에 '('를 넣어준다.

 

만약 ')' 이라면

한번 더 조건을 검사해야한다.

현재 stk가 비어있지 않고, stk.top()이 '('라면

현재까지는 올바른 괄호이므로 stk.pop()을 해준다.

하지만 위 조건이 맞지 않는다면 그대로 ')'을 넣어준다.

 

s.size()만큼 돌면서 스택에 넣어주고 빼는 동작을 반복한다.

for문을 빠져나와 skt가 비어있는지 검사하자..!

만약 비어있으면 올바른 괄호이므로 true를 반환하고,

아니면 올바른 괄호가 아니므로 false를 반환한다..!

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

using namespace std;

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