https://www.acmicpc.net/problem/3986
3986번: 좋은 단어
이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에
www.acmicpc.net
단어 위로 아치형 곡선을 그렸을 때, 선이 교차하지 않는 '좋은 단어'를 판별하는 문제다.
스택관련 문제에서 자주보이는 괄호문제와 같은 문제다.
#include <iostream>
#define fio cin.tie(0)->sync_with_stdio(0)
using namespace std;
#include <stack>
bool is_good(const string& S){
stack<char> stack_;
//스택에 넣자// 1. 비어있으면 넣고 2. 뭔가 있으면 함 보자
for(int i=0; i <S.size(); i++){
char now = S[i];
if(stack_.empty()){//1.비어있다 넣자
stack_.push(now);
}else{//2. 뭔가 있다, 비교해보자
char top_ = stack_.top();
if(top_ == now){//넣을애랑 맨 위에 있는 애랑 같네 >> 빼자
stack_.pop();
}else{//다르네 넣자
stack_.push(now);
}
}
}
if(stack_.size() == 0) return true;
return false;
}
int main(){
fio;
int N; cin >> N;
int cnt = 0;
while(N--){
string tmp; cin >> tmp;
if(is_good(tmp))
cnt++;
}
cout << cnt;
return 0;
}
'알고리즘 > 백준' 카테고리의 다른 글
백준 15815 천재 수학자 성필 (0) | 2021.12.24 |
---|---|
백준 11899 괄호 끼워넣기 (0) | 2021.12.23 |
백준 18511 큰 수 구성하기 (0) | 2021.12.22 |
백준 17478 재귀함수가 뭔가요? (0) | 2021.12.22 |
백준 6603 로또 (0) | 2021.12.22 |