문제
풀이
괄호 판별은 '스택'을 이용해서 하는것이 보통입니다.
컴파일러 과목을 들어보신 분들은 아마 구현해 본 적이 있을 것 입니다.
매커니즘
- '('가 등장하면 스택에 1을 넣습니다.
- ')'가 등장하면 스택에서 pop을 해줍니다. 만일 스택이 empty상태여서 pop을 할 수가 없으면 false를 return해줍니다.
- 문자열의 마지막까지 읽었는데 스택이 empty가 아니라면 '('가 상대적으로 많은 상태이기 때문에 false를 return 해줍니다.
- 문자열의 마지막까지 읽었는데 스택이 empty가 맞다면 정상이므로 true를 return해줍니다.
#include<string>
#include<stack>
#include <iostream>
using namespace std;
bool solution(string s)
{
stack<int> st;
if(s[0]==')')
return false;
else
{
for(int i=0; i<s.size(); i++)
{
if(s[i]=='(')
st.push(1);
else if(s[i]==')')
{
if(!st.empty())
st.pop();
else
return false;
}
}
}
if(st.empty())
return true;
else
return false;
}
'알고리즘 > 프로그래머스 문제풀이' 카테고리의 다른 글
[C++] 주식가격(Lv.2) (0) | 2022.09.08 |
---|---|
[C++] 올바른 괄호 (Lv.2) (0) | 2022.09.05 |
[C++] 124 나라의 숫자 (Lv.2) (0) | 2022.09.04 |
[C++] 멀쩡한 사각형 (Lv.2) (0) | 2022.08.30 |
[C++] 단체사진 찍기 (Lv.2) (0) | 2022.08.29 |