문제에서 알려준 두 가지 연산으로 문자열 S를 문자열 T로 바꿀 수 있는지 확인하는 문제입니다. 두 연산이 각각 문자열 뒤에 A 추가 혹은 뒤집어서 B 추가로 구분되어 있기 때문에 완성된 문자열 T에서 가장 마지막 문자가 무엇이느냐에 따라 앞선 연산이 무엇이었는지 결정됩니다. 이를 이용해서 문자열 S와 길이가 같아질 때까지 문자열 T에 대해 역연산을 하여 두 문자열의 길이가 같아졌을 때 서로 문자열이 같은 지 비교해주면 됩니다.
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <cstring>
#include <string.h>
using namespace std;
int main() {
string S, T; cin >> S >> T;
int lenT, lenS = S.length();
bool flag;
while(1) {
lenT = T.length();
if(lenT == lenS) {
if(S == T) {
flag = true;
}
else{
flag = false;
}
break;
}
if(T[lenT - 1] == 'A') {
T.pop_back();
}
else{
T.pop_back();
reverse(T.begin(), T.end());
}
}
if(flag) {
cout << 1;
}
else{
cout << 0;
}
}