Problem Solving/백준

[백준/c++] 9012 - 괄호

세고래 2021. 3. 6. 04:09

https://www.acmicpc.net/problem/9012

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net


1) 풀이

2021/03/04 - [알고리즘 코테준비/백준] - [백준/c++] 4949 - 균형잡힌 세상

2021/03/05 - [알고리즘 코테준비/백준] - [백준/c++] 4889 - 안정적인 문자열

 

이 문제는 위의 문제들과 같은 방법으로 풀면 되기 때문에 따로 풀이를 적진 않겠다!

다만, 자꾸 똑같은 실수를 해서 어이없게 틀리는 경우가 나와서 적어둔다.

문제에서 각 테스트데이터를 입력할 때마다 항상 스택을 초기화하는 것을 잊지말자!!!

이거때문에 단번에 맞힐 수 있는 것도 자꾸 틀린다😥

다음에는 꼭, 꼭 기억하자!

 

2) 최종 소스코드
#include <bits/stdc++.h>
using namespace std;
int t;
string s;
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> t;
	while (t--) {
		stack<char>st; // 괄호 저장할 스택
		cin >> s;
		bool yes = 1; // 해당 문자열이 VPS인지 판단. 1이면 맞음, 0이면 VPS 아님
		for (auto c : s) {
			if (c == '(') {
				st.push(c);
			}
			else if (c == ')') {
				if (st.empty()) {
					yes = 0;
					break;
				}
				else if (st.top() == '(') {
					st.pop();
				}
			}
		}
		if (!st.empty()) {
			yes = 0;
		}
		
		if (yes) {
			cout << "YES" << '\n';
		}
		else cout << "NO" << '\n';
	}
}
3) 참고자료
728x90