반응형
https://www.acmicpc.net/problem/9012
예전에 후위표기법을 이용해서 수식을 입력받는 프로그램을 만들었던게 생각나서 금방풀은문제.
단순히 stack에 (를 쌓는다.
)가 나왔을때 stack이 비었으면 NO , break; 하고 아니라면 pop()한다.
루프가 끝나고 stack이 비어있지않다면 NO 아니면 YES다. ( 짝이 맞았다면 다 pop됬을 것이므로)
코드는 다음과같다
#include <iostream>
#include <algorithm>
#include <stack>
#include <string>
#include <map>
int main(void){
std::ios_base::sync_with_stdio(false);
//std::cin.tie(NULL);
int N = 0;
std::cin >> N;
for(int i=0; i<N; ++i){
std::string input;
std::cin >> input;
std::stack<char> ptStack;
std::string str = "YES";
for(int i=0; i<input.length(); ++i){
if(input[i] == '('){
ptStack.push('(');
}else{
if(ptStack.empty()){
str = "NO";
break;
}
ptStack.pop();
}
}
if(!ptStack.empty()){
std::cout << "NO" << "\n";
}else{
std::cout << str << "\n";
}
}
return 0;
}
반응형
'프로그래밍 > 알고리즘' 카테고리의 다른 글
[백준] 2206 - 벽 부수고 이동하기 ( bfs ) (2) | 2020.03.07 |
---|---|
[백준]2579번 계단오르기 - dp 기초 (0) | 2020.02.21 |
[백준] 1003번 피보나치함수 (0) | 2019.12.16 |
[백준] 9663번 N-QUEEN (0) | 2019.12.16 |
댓글