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

스택 자료구조를 이용해서 편하게 풀 수 있는 문제이다.

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

int n, cnt;
string s;
int main() {
    cin >> n;
		// n 개의 A와 B로 이루어진 단어 입력
    for(int i = 0; i < n; i++) {
        cin >> s;
				// 매 단어마다 초기화된 stack이 필요하므로 stack을 for문 내에서 선언
        stack<char> stk;
				// 입력되는 각 단어마다 한 글자씩 그 단어의 길이만큼 for문 실행
        for(char a : s) {
						// 만약 stk의 요소가 존재하고, stk의 마지막 요소가 a라면? 마지막 요소 삭제.
            if(stk.size() && stk.top() == a) stk.pop();
						// 그렇지 않으면 a 를 stk에 추가
            else stk.push(a);
        }
				// for문 종료 후 만약 stk의 길이가 0이라면 좋은단어. 카운트 + 1
        if(stk.size() == 0) cnt++;
    }
    cout << cnt << '\\n';

}