Post List

[BOJ] 백준 3986 좋은단어

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

댓글