본문 바로가기

algorithm

백준 4949번 균형잡힌 세상

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

 

아이디어:

1. 입력받을 때 string tmp; getline(cin, tmp);로 한줄 입력 받고 각 글자에 auto i로 접근하여 괄호 문자인지 체크

2. tmp == "." 이면 반복문 종료

 

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

int main() {

	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	string tmp;

	while (true) {
		stack<char> S;
		getline(cin, tmp);
		if (tmp == ".") break;
		
		for (auto i : tmp) {
			switch (i) {
			case '(':
				S.push(i);
				break;

			case '[':
				S.push(i);
				break;

			case ')':
				if (S.empty()) {
					S.push(i);
					break;
				}
				else if (S.top() == '(') {
					S.pop();
					break;
				}
				else {
					S.push(i);
					break;
				}
			case ']':
				if (S.empty()) {
					S.push(i);
					break;
				}
				else if (S.top() == '[') {
					S.pop();
					break;
				}
				else {
					S.push(i);
					break;
				}
			}
		}
		S.empty() ? cout << "yes\n" : cout << "no\n";
	}

	return 0;

}