[백준 9012번] 괄호
2023. 2. 18. 16:50ㆍ자료구조 및 알고리즘/백준
728x90
백준 4949번과 비슷한데 4949번보다는 좀 간단해
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int T;
cin >> T;
cin.ignore();
for (int i = 0; i < T; i++) {
string input;
getline(cin, input);
// 입력 받고
stack<char> s;
bool flag = 0; // 전역 변수를 이용
// 문자형 배열에 문자열의 문자 하나하나 넣어주기
for (int i = 0; i < input.length(); i++) {
char c = input[i];
// (는 push )는 push 말고 상대방을 pop
if ((c == '('))
s.push(c);
else if (c == ')') {
if (!s.empty() && s.top() == '(')
s.pop();
// )를 했는데 비었다. )가 많아서 짝이 안 맞다. 틀렸으니 flag 1
else {
flag = 1;
break;
} // 짝이 안 맞으니 break 해준다.
}
}
/*최종적으로 flag가 0인데 빈 상황 - 짝 맞아
flag가 0인데 비지 앟은 상황은(짝 안 맞아 */
// case 분류 중요하다.
if (flag == 0 && s.empty()) {// flag가 0인데 빈 상황-짝 맞아
cout << "YES" << '\n';
}
else
cout << "NO" << '\n';
}
}
case를 분류해보자 - 복습할 때 해보기!
4949번과 공통점 뭐 있는지 비교해보자...
728x90
'자료구조 및 알고리즘 > 백준' 카테고리의 다른 글
[백준 1966] 프린터 큐 (0) | 2023.02.27 |
---|---|
[백준 11866번] 요세푸스 문제 0 (0) | 2023.02.25 |
[백준 4949] 균형잡힌 세상 (0) | 2023.02.18 |
[백준 12605] 단어순서 뒤집기 (1) | 2023.02.18 |
[백준 17608]막대기 문제 최댓값 갱신 원리 및 논리 파악하기! (0) | 2023.02.16 |