문제 : 백준 3986 (https://www.acmicpc.net/problem/3986)
유형 : stack
A, B로 이루어진 문자열을 N개 입력받는다. 문자열에서 A는 A끼리, B는 B끼리 선을 이어 서로 겹치지 않으면 좋은 단어로 판단한다. 좋은 단어의 개수를 출력한다.
1) strng을 이용해 문자열 입력 받기
2) 겹치지 않고 선이 그어지려면 문자열의 중심 부분부터 짝꿍이 만들어져야 한다
3) 짝꿍이 있는 문자는 문자열에서 무시해도 된다
-> 단어를 stack으로 받아서 이전 문자와 동일한지 비교하여 짝꿍을 찾는다
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int main() {
int n, count = 0;
string str;
stack<char> s;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> str;
if (str.length()%2 == 1) continue;
for (char c : str) {
if (!s.empty() && s.top() == c)
s.pop();
else s.push(c);
}
if (s.empty()) count++;
while(!s.empty()) s.pop();
}
cout << count << endl;
return 0;
}

시간 내로 문제를 해결해보자.