1. 문제 접근
- 스택을 활용하여 문제를 풀어야 함.
- 스택에 문자열의 문자를 하나씩 넣으면서, 가장 위에 있는 문자열이 새로 push하는 문자열과 비교
2. 시행착오
- 좋은 단어의 정의를 잘못 이해함
- 스택을 활용할 때, 스택이 비어있는 경우를 고려하지 못함
3. 코드 및 풀이
3.1 풀이
- 입력된 각 문자열을
stack
을 활용해 좋은 문자인지 좋지 않은 문자열인지 판단함
- 스택에 넣기 전, 스택에 남아있는, 가장 위에 있는 문자와 들어올 문자열을 비교해서, 만약 일치한다면, 스택의 문자열을 삭제, 일치하지 않으면 스택에 문자열을 넣음
- 그 과정이 모두 끝나고, 스택이 비어있다면, cnt를 추가
#include <bits/stdc++.h>
using namespace std;
int n, cnt;
string s;
int main(){
cin >> n;
for(int i = 0; i < n; i++) {
cin >> s;
stack<char> st;
for(char c : s) {
if (st.size() && st.top() == c) st.pop();
else st.push(c);
}
if (st.size() == 0) cnt++;
}
cout << cnt;
return 0;
}
Reference