[백준 9012] 괄호

alsry._.112·2023년 10월 4일
0

백준

목록 보기
74/102

🔗문제 풀러가기
단계별로 풀어보기 단계 16의 3번째 문제이다.

문제 분석

Stack 컨테이너를 사용해서 문제를 해결하였다.

코드

#include <iostream>
#include <stack>
using namespace std;

int main()
{
	int n;

	cin >> n;
	string input;

	for (int i = 0; i < n; ++i)
	{
		stack<char> st;
		cin >> input;

		for (int j = 0; j < input.size(); j++)
		{
			if (st.empty() || input[j] == '(') st.push(input[j]);
			else if (st.top() == '(') st.pop();
		}

		if (st.empty()) cout << "YES" << endl;
		else cout << "NO" << endl;
	}
}

해석

  1. 입력받은 수 만큼 for문을 돌며 문자열을 입력받는다.
  2. 입력받은 문자열의 문자 개수만큼 반복문을 돌며 현재 stack이 비어있거나 input[j]가 ' ( '이면 stack에 문자열을 저장한다.
  3. 위의 조건식을 만족하지 않으나, 현재 stack의 top이 ' ( ' 이라면 pop을 하여 stack의 top을 stack에서 지운다.
  4. 그 후 stack이 비어있다면 YES를, 아니라면 NO를 출력하면 끝!
profile
소통해요

0개의 댓글