[210322][백준/BOJ] 4949번 균형잡힌 세상

KeonWoo Kim·2021년 3월 22일
0

알고리즘

목록 보기
23/84

문제

입출력


풀이

STL stack을 통해 문제를 풀었다.

  1. '(' 이 나오면 push를 한다.
  2. '[' 이 나오면 push를 한다.
  3. ')' 일때 stack이 공백이 아니면서 top이 '(' 라면 pop을 하고 아니라면 push를 한다.
  4. ']' 일때 stack이 공백이 아니면서 top이 '[' 라면 pop을 하고 아니라면 push를 한다.
  5. 3, 4번의 else를 구현하지 않으면 ())이나 []]같이 ')', ']' 이 한번 더 나오더라도 push하지 못하고 stack이 공백인 상태로 인식하기 때문에 반드시 예외처리를 해줘야한다.

코드

#include <bits/stdc++.h>
using namespace std;

int main()
{
	while (true)
	{
		stack<char>s;
		string str;
		getline(cin, str);

		if (str[0] == '.')
			break;
		for (int i = 0; str[i] != '\0'; ++i)
		{
			if (str[i] == '(')
				s.push(str[i]);
			if (str[i] == '[')
				s.push(str[i]);
			if (str[i] == ')')
			{
				if (!s.empty() && s.top() == '(')
					s.pop();
				else
					s.push(str[i]);
			}
			if (str[i] == ']')
			{
				if (!s.empty() && s.top() == '[')
					s.pop();
				else
					s.push(str[i]);
			}
		}
		if (s.empty())
			cout << "yes" << '\n';
		else
			cout << "no" << '\n';
	}
}
profile
안녕하세요

0개의 댓글

관련 채용 정보