[BOJ] 백준 3986 좋은단어
문제 링크 : https://www.acmicpc.net/problem/3986
스택 자료구조를 사용하면 풀이가 간단한 문제 입니다.
문제에서 말하는 좋은단어는 A-A 쌍과 B-B 쌍이 교차하지 않을때 성립하는데,
이는 스택에서 A-A / B-B가 만나 POP 되었을때, 남아있는 문자가 없다는 뜻과 같습니다.
소스코드 :
#include#include #include using namespace std; int main() { // Test case t 입력. int t; cin >> t; cin.ignore(); int num = 0; while (t--) { stack st; string s; cin >> s; for (int i = 0; i < s.length(); i++) { if (st.empty()) { st.push(s[i]); continue; } // 현재 탐색할 문자가 스택의 top과 일치한다면 스택 pop. if (st.top() == s[i]) { st.pop(); } // 일치하지 않는다면 현재 탐색할 문자를 스택에 push. else { st.push(s[i]); } } // 스택이 비어있다면 모든 문자가 짝지어졌다는 뜻이므로 num을 하나 올림. if (st.empty()) num++; } cout << num << endl; }
댓글
댓글 쓰기