[PS][Baekjoon] 9012_괄호

dong_min_god·2023년 1월 30일
0

PS-Baekjoon

목록 보기
3/4

<문제접근>

  • 괄호가 제거되는 경우는 가장 바깥쪽부터 일어나므로 후입선출의 원리인 스택을 이용한다.
  • case분류를 한다
    1) 스택이 비어있는가 - 스택에 push
    2) 스택이 차있는가 - 괄호의 제거 조건인 짝을 맞추었는가? 제거 / 그 외의 경우 스택에 push
    3) 마지막으로 다 입력했을 때 스택이 비어있는가 - VPS / 스택에 데이터가 남아있다면 VPS가 아님



<코드>

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

using namespace std;
int t;

void check_str(string str) {
	int str_size = str.length();
	stack<int> s;
	for (int i = 0; i < str_size; i++) {
		if (s.empty()) s.push(str[i]);
		else {
			if (s.top() == '(' && str[i] == ')') s.pop();
			else s.push(str[i]);
		}
	}
	if (s.empty()) cout << "YES" << "\n";
	else cout << "NO" << "\n";
}

int main()
{
	cin >> t;
	while (t--) {
		string input;
		cin >> input;
		check_str(input);
	}

	return 0;
}
profile
코린이 탈출 기원

0개의 댓글