프로그래머스 알고리즘/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
반응형