c++의 stack STL을 이용해서 푸는 문제였다.
입력 문자열을 받은 뒤에, 문자열을 하나씩 순회하면서 스택을 이용해서 괄호 열기(와 괄호 닫기)의 짝을 맞추었다.
문자가 (라면 스택에 Push하고
문자가 )이면 스택에서 Pop해준다.
만약 스택에서 Pop할 것이 없다면(스택이 비어있다면), 이번 괄호는 NO인 것이다.
문자열을 모두 처리한 순간에 스택이 비어있다면(모두 짝이 맞았다면) YES를, 아니라면 NO를 출력해준다.
#include <iostream>
#include <string>
#include <vector>
#include <stack>
int main() {
int size;
std::cin >> size;
std::vector<std::string> v;
for (int i = 0; i < size; i++) {
std::stack<std::string> st;
bool done=false;
std::string tmp;
std::cin >> tmp;
for (int i = 0; i < tmp.size(); i++) {
if (tmp[i] == '(') {
st.push("(");
}
else {
if (st.size() == 0) {
v.push_back("NO");
done = true;
break;
}
else {
st.pop();
}
}
}
if (done) {
continue;
}
else {
if (st.size() == 0) {
v.push_back("YES");
}
else {
v.push_back("NO");
}
}
}
std::vector<std::string>::iterator iter;
for (iter = v.begin(); iter != v.end(); iter++) {
std::cout << *iter << std::endl;
}
return 0;
}
'Computer Science > C++' 카테고리의 다른 글
백준 C++ | #17 BOJ5585 거스름돈 C++ 문제 풀이 (0) | 2022.08.16 |
---|---|
백준 C++ | #16 BOJ10828 스택 C++ 문제 풀이 (0) | 2022.08.16 |
백준 C++ | #14 BOJ1927 최소 힙 C++ 문제 풀이 (0) | 2022.08.14 |
백준 C++ | #13 BOJ1436 영화감독 숌 C++ 문제 풀이 (0) | 2022.08.12 |
백준 C++ | #12 BOJ1110 더하기 사이클 C++ 문제 풀이 (0) | 2022.08.11 |