코딩고치

[백준][자료구조]괄호 본문

백준 알고리즘 기초/자료구조

[백준][자료구조]괄호

코딩고치 2019. 9. 4. 00:59

자료구조 스택을 이용하여 입력으로 주어진 괄호 문자열이 VPS인지 아닌지 확인하는 알고리즘을 구현하는 문제이다.

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

bool confirm(string str)
{
	getline(cin, str);		//getline함수를 이용하여 문자열을 받음
	stack<char> sta;

	for (char ch : str)
	{
		if (ch == '(')
			sta.push(ch);	//여는 괄호일 경우 push
		else
		{
			if (!sta.empty())
				sta.pop();		//닫는 괄호일 경우 stack이 비어있지 않으면 pop
			else
				return false;	//stack이 비어있을 경우 false
		}
	}

	return sta.empty();		//stack비어있는 경우 true 비어있지 않으면 false
}

int main(void)
{
	int n;
	cin >> n;
	cin.ignore();		//n입력 시 입력되는 '\n'제거
	while (n--)
	{
		string str;
		

		if (confirm(str))
			cout << "YES" << '\n';		//confirm함수가 참일 경우
		else
			cout << "NO" << '\n';		//거짓일 경우
	}
	return 0;
}

 

 

Comments