백준 문제풀이

9012 번 : 괄호

하다블 2023. 6. 7. 18:19
반응형

문제는 다음과 같습니다.

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

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

 

풀이 코드는 다음과 같습니다.

 

#include <iostream>
#include <vector>
#include <stack>

using namespace std;
int main()
{
	int n;
	cin>>n;
	for(int i{0};i<n;i++)
	{
		string s;
		cin>>s;
		stack<int>st;
		bool check{true};
		for(int j{0};j<s.size();j++)
		{
			if (s[j]=='(')
			{
				st.push(1);
			}
			else if(s[j]==')')
			{
				if(st.size()==0)
				{
					check=false;
					break;
				}
				else
				{
					st.pop();
				}
			}
		}
		if(st.size()!=0)
			check=false;
		if(check)
			cout<<"YES\n";
		else
			cout<<"NO\n";
	}
	return 0;
}

스택을 이용해서 푸는 가장 간단한 방식의 문제입니다.

( 를 입력받으면 스택에 push 해주고 )를 입력받으면 pop 해줍니다. 이때 스택이 비어있다면 바로 NO를 출력하도록 합니다.

또한 모든 입력을 마친 후에 스택에 하나라도 남아있다면 모든 괄호가 만들어진 것이 아니기 때문에 NO를 출력합니다.

입력을 마친 후 스택이 비어있다면 모든 괄호가 만들어졌다는 뜻이므로 YES를 출력합니다.

반응형

'백준 문제풀이' 카테고리의 다른 글

1935 번 : 후위표기식2  (0) 2023.06.07
10866 번 : 덱  (0) 2023.06.07
18870 번 : 좌표 압축  (0) 2023.05.30
1004 번 : 어린왕자 [AI 풀이 , 후기]  (0) 2023.05.23
10815 번 : 숫자 카드  (0) 2023.05.11