• Home
  • About
    • 게임 개발자 유정룡 photo

      게임 개발자 유정룡

      포트폴리오

    • Learn More
    • Email
    • Github
    • Bitbucket
  • Projects
    • All Projects
    • All Tags

코딩테스트 백준 - 4949 균형잡힌 세상

13 Aug 2021

Reading time ~1 minute

문제

하나 딱 하나때문에 좀 오래걸렸다.

문자열을 입력받고 여는 괄호를 스텍에 저장하고 닫는 괄호랑 비교한뒤,

마지막에 stack의 갯수에 따라 정해주면 된다.

#include <stdio.h>

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

using namespace std;

bool IsComplete(const string& sentence)
{
	stack<char> s;

	for (int i = 0; i < sentence.length(); i++)
	{
		if (sentence[i] == '(' || sentence[i] == '[')
		{
			s.push(sentence[i]);
		}

		else if (sentence[i] == ')')
		{
			if (s.empty() == true)
			{
				return false;
			}
			char c = s.top();
			s.pop();

			if (c != '(')
			{
				return false;
			}
		}
		else if (sentence[i] == ']')
		{
			if (s.empty() == true)
			{
				return false;
			}

			char c = s.top();
			s.pop();

			if (c != '[')
			{
				return false;
			}
		}
	}

	if (s.empty())
	{
		return true;
	}
	else
	{
		return false;
	}
}


int main()
{
	vector<bool> answers;
	while (true)
	{
		cin.clear();
		string s;
		getline(cin, s);

		if (s == ".") { break; }

		answers.push_back(IsComplete(s));
	}

	for (int i = 0; i < answers.size(); i++)
	{
		if (answers[i] == true)
		{
			printf("yes\n");
		}
		else
		{
			printf("no\n");
		}
	}
}

마지막 스텍의 갯수를 생각 안해서 좀 오래 걸렸다 ㅋㅋ



CodingTest Share Tweet +1