https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
이 문제는 괄호의 쌍이 맞는지 확인해야한다.
이를 위해 자료구조인 스택을 사용하였다.
먼저 입력된 문자들을 스택에 집어 넣는다. 그후 스택의 top을 꺼내서 열림 괄호인지 닫힘 괄호인지 확인한다.
스택을 사용했으므로 닫힘 괄호가 먼져 있는지 확인해야한다.
이를 위해 배열에 닫힘 괄호가 있다면 요소를 채운다.
열림 괄호가 스택에서 나온다면 배열에 닫힘 괄호가 들어와 있는지 확인하고 없다면 NO를 출력하도록 한다.
요소가 있다면 VPS라고 설정하고 확인을 위한 배열에 요소를 하나 지운다.
출력 시 확인을 위한 배열이 비어있거나 VPS라고 설정되어 있다면 YES를 출력하고,
만약 VPS가 아니라면 NO를 출력한다.
#include<iostream>
#include<vector>
using namespace std;
int main(){
int N;
cin>>N;
for(int i = 0;i<N;i++){
string input;
cin>>input;
vector<char> stack;
for(int j = 0;j<input.length();j++)
stack.push_back(input[j]);
bool check = false;
vector<bool> counter;
while(!stack.empty()){
char c = stack.back();
stack.pop_back();
if(c == ')'){
counter.push_back(true);
}
if(c == '(') {
if(counter.empty()){
check = false;
break;
}
check = true;
counter.pop_back();
}
}
if(check&&counter.empty()) cout<<"YES"<<'\n';
else cout<<"NO"<<'\n';
}
}
'Baekjoon Review' 카테고리의 다른 글
[Silver 4] 10816번 숫자 카드 2 (0) | 2023.10.13 |
---|---|
[Silver 5] 10814번 나이순 정렬 (0) | 2023.10.12 |
[Bronze 2] 2798번 블랙잭 (0) | 2023.10.12 |
[Silver 4] 2164번 카드2 (0) | 2023.10.11 |
[Silver 3] 2108번 통계학 (0) | 2023.10.11 |