9012 - 괄호

재찬·2023년 1월 28일
0

Algorithm

목록 보기
31/64

문제

코드

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

int t;
string s;
stack<char> st;

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	
	cin >> t;
	
	for(int i = 0; i <t; i++){
		cin >> s;
		
		for(char a : s){
			if(st.size() != 0 && a == ')' && st.top() == '('){
				st.pop();
			}else st.push(a);
		}
		
		if(st.size() != 0){
			cout << "NO" << '\n';
		}else cout << "YES" << '\n';
		
		while(st.size()){
			st.pop();
		}
	}
}

풀이

'(' 와 ')'의 쌍을 맞추기 위해서는 stack을 사용하는 것이 가장 쉽다.
stack이 비어 있지 않고 입력 값이 ')'일 때 stack의 top 값이 '('이면 짝이 맞는 한 쌍이기에 삭제 시킨다.
그 외에는 그냥 stack에 넣는다.
결과론적으로 stack의 사이즈가 0이 아니면 "NO"
0이면 "YES"가 된다.

결과

후기

stack을 알고 있다면 어렵지 않게 해결할 수 있는 문제였다.

0개의 댓글