본문 바로가기

Algorithm/Data Structures

BRACKETS 2

#include 
#include 
#include 
#include 

using namespace std;

bool IsValid(const string str);
bool IsOpenSymbol(const char target);
bool IsSymmetric(const char source, const char target);

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

	for (int cIter = 0; cIter < caseNum; cIter++)
	{
		string brackets;

		std::getline(std::cin, brackets);

		// Process
		if (IsValid(brackets)) cout << "YES" << endl;
		else cout << "NO" << endl;
	}
}

bool IsValid(const string str)
{
	stack bstack;

	int arrLength = str.length() + 1;
	char* chars = new char[arrLength];
	strcpy_s(chars, arrLength, str.c_str());

	for (int i = 0; i < arrLength; i++)
	{
		if (bstack.size() == 0) bstack.push(chars[i]);
		else if (IsOpenSymbol(chars[i])) bstack.push(chars[i]);
		else if (IsSymmetric(bstack.top(), chars[i])) bstack.pop();
		else return false;
	}

	return true;
}

bool IsOpenSymbol(const char target)
{
	if (target == '(' || target == '{' || target == '[') return true;
	else return false;
}

bool IsSymmetric(const char source, const char target)
{
	if (source == '(' && target == ')') return true;
	else if (source == '{' && target == '}') return true;
	else if (source == '[' && target == ']') return true;
	else return false;
}

 

Brackets2Input.txt
0.00MB

 

Brackets2Output.txt
0.00MB

 

꽤나 쉬운 문제..

책에서는 "({]" string 과 ")}]" string을 인덱스로 접근하면서 input 들이 대칭인지 확인하였다.

'Algorithm > Data Structures' 카테고리의 다른 글

ITES  (0) 2019.10.03
JOSEPHUS  (0) 2019.03.18