전형적인 스택 문제입니다. 이런 유형의 문제들은 자료구조책의 스택단원을 공부하면서 한번쯤은 구현해봤을 문제입니다.

코드가 길어질까봐 stl로 작성했는데 스택을 처음 공부하시는분들은 복습겸 꼭 c언어 스타일로 구현해볼것을 권장합니다.


코드

#include<iostream>
#include<stack>
#include<string>
using namespace std;
int main()
{
	for (int t = 1; t <= 10; t++)
	{
		int len;
		cin >> len;
		stack<char>s;
		bool check = true;
		for (int i = 0; i < len; i++)
		{
			char c;
			cin >> c;
			switch (c)
			{
			case '[':
			case '{':
			case '<':
			case '(':
				s.push(c);
				break;
			case ']':
			case '}':
			case ')':
			case '>':
				if (s.empty())
				{
					check = false;
					break;
				}
				char pop = s.top();
				s.pop();
				if ((pop == '(' && c != ')') || (pop == '[' && c != ']') || (pop == '{' && c != '}') || (pop == '<' && c != '>'))
				{
					check = false;
					break;
				}
			}
		}
		cout << "#" << t << " ";
		if ((!s.empty() || check == false))
			cout << 0;
		else cout << 1;
			cout << endl;




	}

}




+ Recent posts