9012_괄호
링크
https://www.acmicpc.net/problem/9012
풀이
괄호 문제는 Stack으로 구현할 수 있습니다.
여는 괄호를 push, 닫는 괄호를 pop이라고 생각해줍니다.
pop을 하기 전에 empty 체크를 해서 비어 있는데 pop을 했다면 잘못된 괄호 문자열이라고 체크해줍니다.
그리고 마지막에 괄호 문자열이 끝나고 스택의 empty 여부를 체크했을 때 안에 data가 있다면 괄호가 다 닫힌 게 아니므로 잘못된 괄호 문자열이라고 체크해줍니다.
1. empty인데 pop 시도할 경우
2. 끝났는데 empty가 아닐 경우
코드
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
//9012_괄호 #include <iostream> #include <stack> #include <string> using namespace std;
int main() { ios_base::sync_with_stdio(false); cin.tie(NULL);
int T; string str;
cin >> T;
while (T--) { stack<int> stk; bool wrong = false; cin >> str;
for (auto c : str) { if (c == '(') { stk.push(1); }
else if (c == ')') { if (stk.empty()) { wrong = true; //여는 괄호 수 < 닫는 괄호 수 break; } else { stk.pop(); } } }
if (stk.empty() && !wrong) cout << "YES\n"; //empty X -> 여는 괄호 수 > 닫는 괄호 수 else cout << "NO\n"; }
return 0; } |
'PS > BOJ' 카테고리의 다른 글
[백준 BOJ][queue] 2075 N번째 큰 수 (0) | 2018.07.26 |
---|---|
[백준 BOJ][stack] 10799 쇠막대기 (0) | 2018.07.26 |
[백준 BOJ][queue] 10845 큐 (0) | 2018.07.26 |
[백준 BOJ][stack] 10828 스택 (0) | 2018.07.26 |
[백준 BOJ][sort] 11651 좌표 정렬하기 2 (0) | 2018.07.24 |