[백준] 좋은 단어 3986

Su-hyeon B·2022년 11월 15일
0

알고리즘 문제 풀이

목록 보기
41/70
post-custom-banner

문제

  1. 같은 글자끼리 쌍을 짓는다. 만약 선끼리 교차하지 않으면서 각 글자를 정확히 한개의 다른 위치에 있는 같은 글자와 짝 지을 수 있으면 해당 단어는 "좋은 단어"이다.
  2. 좋은 단어의 개수를 구하여라

입력

  1. 단어의 수 N이 주어진다. (1 ≤ N ≤ 100)
  2. N개 줄에는 A와 B로만 이루어진 단어가 한 줄에 하나씩 주어진다.
3
ABAB
AABB
ABBA

풀이

풀이1

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

int main (void){
    ios::sync_with_stdio(0);
    cin.tie(0);
    
    int N;
    cin >> N;
     
    int ans=0;
    
    while(N--){
        stack<int> s;
        string str;//abab
        cin >> str;
        
        //좋은 단어인지 판단
        for(auto c:str){
            if(c=='A'){
                if(!s.empty() && s.top()=='A') s.pop();
                else s.push(c);
            }
            else{ //B
                if(!s.empty() && s.top()=='B') s.pop();
                else s.push(c);
            }
        }
        if(s.empty()) ans++;
    }
    cout << ans;
    
    return 0;
}

a, b 경우 안나누고 그냥 현재 문자랑 stack top과 같은지 여부만 확인할 수 있다.

profile
ML/AI Engineer
post-custom-banner

0개의 댓글