🚀 들어가며...
- 백준 9012번 문제 풀이다.
- 두세번 정도 풀었는데, 이번에는 스택으로 풀었습니다.
🔗 문제
https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
📑 내용
1. "(" 의 경우
- stack.push("(")
2. ")"의 경우
- 스택을 확인하여 "("이 있으면, 통과
- 스택에 "("이 없으면, 불가능함 (스택에 강제로 "X" push, 이후 스택이 비어질 수가 없다.)
3. 괄호쌍이 맞으면, 스택이 비어있어야 한다.
- (stack.isEmpty())? "YES" : "NO"
💌 소스코드
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int main(void){
int n;
cin >> n;
while(n--){
stack<string> st;
string str = "";
cin >> str;
for(int i = 0; i < str.size(); i++){
if(str[i] == '(')
st.push("(");
else{ // str[i] == ')'
if(!st.empty() && st.top() == "("){
st.pop();
}else{
st.push("X"); // 불능 (무조건 불가능)
}
}
}
if(st.empty())
cout << "YES" << endl;
else
cout << "NO" << endl;
}
}
🙋🏻♂️ 후기
스택을 활용한 구현이 은근 재미있는 것 같다.
PS도 자주 못하다보니, 세번째 푸는 문제..
'알고리즘 > 백준' 카테고리의 다른 글
[백준 1406] 에디터 (cpp, stack) (0) | 2021.12.19 |
---|---|
[백준 1874] 스택 수열 (cpp, stack) (0) | 2021.12.19 |
[백준 9093] 단어 뒤집기 (cpp, stack) (0) | 2021.12.12 |
[백준 10828] 스택 (cpp, stack) (0) | 2021.12.12 |
댓글