💻 OnlineJudge/Baekjoon

[백준 / BOJ] C++ 9012 괄호

스쳐가는비 2022. 8. 17. 09:32

백준  - 단계별로 풀어보기 [9012]

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

 

9012번: 괄호

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

www.acmicpc.net

풀이

제가 풀이한 방법

1. '(' 여는괄호와 ')' 닫는괄호의 갯수가 동일해야합니다. 

2. 닫는괄호가 나올경우, stack 내부가 비어있으면 안됩니다. 

3. No, Yes 출력 시 result 결과값으로 올바른 문자열인지 확인합니다.

 

Code

#include <iostream>
#include <string>
#include <stack>

using namespace std;

int main() 
{
	int T;
	string s;
	int _size = 0;
	bool result = true;


	cin >> T;


	for (int i = 0; i < T; i++) {
		stack<char> _stack;
		cin >> s;

		_size = s.length();

		for (int j = 0; j < _size; j++) {

			if (s[j] == '(')
				_stack.push(s[j]);
			else if (s[j] == ')')
			{
				if (_stack.empty())
				{
					result = false;
					break;
				}
				else
					_stack.pop();
			}
		}
		if (!_stack.empty() || result == false)
			cout << "NO" << endl;
		else if(result)
			cout << "YES" << endl;

		result = true;
	}
}