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';
}