-
[백준 9012] 괄호 (cpp, stack)알고리즘/백준 2021. 12. 12. 16:44
🚀 들어가며...
- 백준 9012번 문제 풀이다.
- 두세번 정도 풀었는데, 이번에는 스택으로 풀었습니다.
🔗 문제
https://www.acmicpc.net/problem/9012
📑 내용
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