문제 https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
풀이
입력받은 문자열을 돌다가
1) 여는 괄호를 만나면 stack에 push한다.
2) stack이 비어있지 않은 상태에서 닫는 괄호를 만나면 pop 한다.
3) stack이 비어있는 상태에서 닫는 괄호를 만나면 false
입력받은 문자열을 다 돈 후에도 false 가 되지 않고 stack이 비어있다면 true를 반환한다.
코드
#include <iostream>
#include <string>
#include <stack>
using namespace std;
bool vps(string ps)
{
stack<char> s;
bool flag = true;
for(int i=0; i<ps.length(); i++)
{
if(ps[i]=='(')
{
s.push(ps[i]);
}
else if(!s.empty() && ps[i]==')')
{
s.pop();
}
else if(s.empty() && ps[i] ==')')
{
flag = false;
break;
}
}
if(flag && s.empty()) return true;
else return false;
}
int main()
{
int n;
cin>>n;
string str;
for(int i=0; i<n; i++)
{
cin>>str;
if(vps(str)) cout<<"YES"<<'\n';
else cout<<"NO"<<'\n';
}
}
'알고리즘 > 문제 풀이' 카테고리의 다른 글
백준 1065 - 한수 (0) | 2022.03.19 |
---|---|
백준 1158 - 요세푸스 문제(C++) (0) | 2022.03.12 |
백준 4949 - 균형잡힌 세상 (0) | 2022.03.03 |
백준 10816 - 숫자 카드 2 (0) | 2022.02.23 |
백준 1920 - 수 찾기 (0) | 2022.02.19 |