알고리즘 풀이/백준

[9012] 백준 알고리즘 : 괄호(C++)

데롱디롱 2019. 11. 20. 00:57
728x90

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

 

일단 문자열의 첫 문자를 스택에 넣어둔 다음에,
스택 맨 위와 다음 문자열이 '( )'가 되면, pop()하고
스택이 비어있거나 VPS가 되지 않는다면 push()하도록 구현하였다.

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

int main()
{
	int t = 0;
	cin >> t;
	cin.ignore();

	for (int i = 0; i < t; i++)
	{
		stack<char> ps;
		string s;
		getline(cin, s);
		ps.push(s[0]);
		
		for (int j = 1; j < s.length(); j++)
		{
			if (!ps.empty() && ps.top() == '('&& s[j] == ')')
				ps.pop();
			else
				ps.push(s[j]);
		}
		if (ps.empty() == true)
			cout << "YES" << endl;
		else
			cout << "NO" << endl;
	}

	return 0;
}

 성공 ^◇^

 

 

9012번: 괄호

문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(conc

www.acmicpc.net