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

 

4949번: 균형잡힌 세상

문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단

www.acmicpc.net

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

stack<char> stck;

void	print_result(int is_balanced)
{
	if (is_balanced)
		cout << "yes\n";
	else
		cout << "no\n";
}

int		find_match(char c)
{
	if (stck.empty())
		return (0);
	if ((c == ')' && stck.top() == '(') ||
		(c == ']' && stck.top() == '['))
	{
		stck.pop();
		return (1);
	}
	return (0);
}

int		main(void)
{
	ios::sync_with_stdio(0);
	cin.tie(0);

	int flag;

	while (1)
	{
		string s;
		flag = 1;
		while (!stck.empty()) stck.pop();
		getline(cin, s);
		if (s == ".")
			break ;
		for (auto c : s)
		{
			if (c == '(' || c == '[')
				stck.push(c);
			else if (c == ')' || c == ']')
			{
				if (!find_match(c))
				{
					flag = 0;
					break ;
				}
			}
		}
		if (stck.empty() && flag)
			print_result(1);
		else
			print_result(0);
	}
}

 

문제 풀 때 참고한 글

https://twpower.github.io/75-how-to-use-stack-in-cpp

 

[C++] C++ STL stack 기본 사용법과 예제

Practice makes perfect!

twpower.github.io

 

 

+ Recent posts