728x90
https://www.acmicpc.net/problem/9012
문제 풀이
VPS인지 확인하는 법은 간단하다. 입력받은 괄호들을 스택에 차례대로 쌓고 '( )' 쌍이 나오면 스택에서 제거하면 된다.
그럼 스택에 '('이 등장하면 쌓아주고 ')'이 등장하면 제거하는 연산을 하면 된다.
함수 func
연산을 해주는 함수, 비어있으면 "YES" 아니라면 "NO" 출력 이후 스택을 초기화해준다.
느낀 점
분명히 맞은 것 같은데 계속 틀렸다고 나오기에 어떤 점이 문제인지 한참 고민했다... 알고 보니 스택을 초기화를 해주지 않았던 부분이 문제였다!
코드
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int n;
stack<char> s;
string str;
void func(string str) {
for (int i = 0; i < str.length();i++) {
if (s.empty() || str[i] == '(') s.push(str[i]);
else if (s.top() == '(') s.pop();
}
if (s.empty()) cout << "YES" << "\n";
else cout << "NO" << "\n";
while (!s.empty()) s.pop();
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i = 0; i < n; i++) {
cin >> str;
func(str);
}
}
'문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[C++] 백준 1874번 : 스택 수열 (0) | 2021.07.23 |
---|---|
[C++] 백준 4949번 : 균형잡힌 세상 (0) | 2021.07.22 |
[C++] 백준 10773번 : 제로 (0) | 2021.07.21 |
[C++] 백준 10828번 : 스택 (0) | 2021.07.21 |
[C++] 백준 1676번 : 팩토리얼 0의 개수 (0) | 2021.07.19 |
댓글