반응형
https://www.acmicpc.net/problem/9012
본 문제는 2012 ICPC Daejeon Nationalwide Internet Competition G번 문제다. stack을 이용하면 쉽게 풀린다. 문자열 전체를 입력받을 때, ')' 입력이 들어왔을 때, stack의 top이 '('일 경우에만 pop을 하고 아닌 경우 모두 push를 한다. 문자열 전체 입력이 끝났을 때, stack의 empty 여부를 확인하면 된다.
- ')' 입력 시, top가 '(' 이면 pop
- 아니면 push
- 문자열 전체 입력이 끝남
- stack이 empty일 때 YES, 아닐 때 NO.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
string s;
cin >> s;
stack<char> st;
for (int i = 0; i < s.size(); i++) {
if (s[i] == ')') {
if (!st.empty() && st.top() == '(')
st.pop();
else st.push(s[i]);
}
else st.push(s[i]);
}
if (st.empty()) cout << "YES" << "\n";
else cout << "NO" << "\n";
}
return 0;
}
|
cs |
반응형
'백준' 카테고리의 다른 글
[백준 1406] 에디터, C++ (0) | 2020.01.08 |
---|---|
[백준 1874] 스택 수열, C++ (0) | 2020.01.08 |
[백준 9093] 단어 뒤집기, C++ (0) | 2020.01.08 |
[백준 10828] 스택, C++ (0) | 2020.01.08 |
[백준] 7569 - 토마토, C++ (0) | 2020.01.08 |
댓글