알고리즘/BOJ

[c/c++] BOJ 3986번 문제 - 좋은단어

wonjun.Aden 2022. 3. 7. 23:34

https://www.acmicpc.net/problem/3986

 

3986번: 좋은 단어

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

www.acmicpc.net

문제

문제풀이

#include <bits/stdc++.h>
using namespace std;

//좋은 단어
//단어 위로 아치형 곡선을 그어 같은 글자끼리(A는 A끼리, B는 B끼리) 쌍을 짓기로 하였다. 
//선끼리 교차하지 않으면서 각 글자를 정확히 한 개의 다른 위치에 있는 같은 글자와 짝 지을수 있다면, 그 단어는 '좋은 단어'

int main(){

    ios::sync_with_stdio(false);
    cin.tie(0);
    int ans=0;
    int n;
    cin >> n;

    while(n--){
        string input;
        stack<char> st;
        cin >> input;
        for(auto word : input){
            if(!st.empty() && st.top() == word) st.pop();
            else st.push(word);
        }
        if(st.empty()) ans++;
    }

    cout << ans;


    return 0;
}

문제의 포인트

  • AA BB BAAB ABBA 는 좋은 단어
  • BABA BBB AAA ABA 좋지 않은 단어!
반응형