Baekjoon/Silver

C++ / 백준 / 9012 / 괄호

GitHubSeob 2022. 3. 7. 20:28

문제

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

 

9012번: 괄호

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

www.acmicpc.net

문제풀이

스택을 이용하여 풀었다.

스택 bracket을 선언한다.

입력받은 string만큼 반복하면서 스택이 비어있지 않고, 마지막에 들어온 괄호가 '('이고, 이번 괄호 값이 ')'이라면

스택을 pop한다.

이 이외의 경우는 스택 bracket에 push만 하면 된다.

'(' 다음 ')'이 오는 경우라면 스택에 있는 '('이 없어지고 push를 하지 않기 때문에 '(', ')'는 사라진다.

 

코드

#include <iostream>
#include <stack>
using namespace std;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);

	int T(0), idx(0);
	cin >> T;
	
	while (T--) {
		stack<int>bracket;
		string input("");
		cin >> input;
		for (idx = 0; idx < input.size(); ++idx) {
			if (!bracket.empty() && bracket.top() == '(' && input[idx] == ')')
				bracket.pop();
			else bracket.push(input[idx]);
		}
		if (bracket.empty()) cout << "YES\n";
		else cout << "NO\n";
	}
}