알고리즘/백준

12904 A와 B

가을맛 2021. 8. 23. 22:20
 

12904번: A와 B

수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수

www.acmicpc.net

 

 

정방향이 아닌 역방향으로 생각하면 쉽다.

글자를 조합해서 하나의 단어로 만드는 것 대신 단어에서 한 글자씩 빼는 방식이 더 쉽고, 메모리 효율도 좋음.

 

#include <algorithm>
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char const *argv[]) {
  ios_base ::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);

  string S, T;
  cin >> S >> T;

  while (1) {

    if (S.length() == T.length()) {
      if (S == T)
        cout << 1;
      else
        cout << 0;
      return 0;
    }

    //문자열 T에서 한글자씩 뺀다
    char tmp = T.back();
    T.pop_back();

    if (tmp == 'B')
      reverse(T.begin(), T.end());
  }

  return 0;
}