본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 3986번 : 좋은 단어

반응형

www.acmicpc.net/problem/3986

 

3986번: 좋은 단어

이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에

www.acmicpc.net

stack을 사용하는 간단한 문제였습니다

 

풀이방법

* stack s가 비어있을 경우 s.top() 함수를 호출한다면 오류가 발생하므로 조심해야 합니다.

모든 단어를 검사하면서 stack이 비어있지 않다면 s.top != 단어인 경우엔 push, s.top != 한 단어인 경우엔 pop해주면 됩니다.

마지막에 stack이 비어있다면 좋은 단어입니다.

 

Code

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n,ans=0;
    cin >> n;
    while(n--){
        string word;
        stack <char> s;
        cin >> word;
        for(int i = 0; i < word.size(); i++){
            if(!s.size()) s.push(word[i]);
            else {
                if(s.top()!=word[i]) s.push(word[i]);
                else s.pop();
            }
        }
        if(s.empty()) ans++;
    }
    cout << ans <<'\n';
}