1주차(자료구조) - [C++]백준9012 괄호
문제
예제 입력
코드
#include <iostream>
#include <stack>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int T;
cin >> T;
stack<char> Stack;
stack<char> temp;
string s;
string* result = new string[T];
for (int i = 0; i < T; i++) {
cin >> s;
for (int j = 0; j < s.length(); j++) {
if (s[j] == '(') {
Stack.push(s[j]);
}
else {
if (Stack.empty()) {
Stack.push('E');
break;
}
Stack.pop();
}
}
if (Stack.empty()) {
result[i] = "YES";
}
else {
Stack = temp;
result[i] = "NO";
}
}
for (int i = 0; i < T; i++) {
cout << result[i] << "\n";
}
delete[]result;
result = nullptr;
}
설명
C++ STL(표준 템플릿 라이브러리)에서 스택을 사용하여 한 줄마다 괄호가 짝이 맞는지 확인합니다. 여는 괄호를 스택에 PUSH해주고 중간중간에 닫는 괄호가 나오면 괄호가 완성되니 POP해줍니다. 그래서 결론적으로 괄호가 수에 맞게 잘 짝지어 있다면 성공(YES)를 출력하고 만약 닫는 괄호가 먼저 나오거나 수가 맞지 않는다면 실패(NO)를 출력합니다.
<stack>
-stack<자료형> 변수명; : 스택 자료구조 사용