문제 풀이 : 두 문자열 S와 T가 주어졌을 때, S를 T로 바꾸는 게임으로, 오직 두 가지 연산만이 가능하다는 것이 특징이다. 해당 두 가지 연산은 1) 문자열의 뒤에 A를 추가한다. 2) 문자열을 뒤집고 뒤에 B를 추가한다. 이다. 이 두가지 연산에서 중요하게 보아야할 점은 "해당 연산이 이루어지고 나서"이다. 1번 연산이 이루어지고 나면 문자열의 마지막은 A가 되고, 2번 연산이 이루어지고 나면 문자열의 마지막은 B가 된다. 즉, 어떤 연산이 진행되었는지에 대한 내용이 명확하게 보여진다는 의미이다. 그렇기에, 완성된 문자열인 T로부터 시작하여, 마지막 문자열의 값에 따라 위의 연산을 반대로 진행하는 방식으로 구현하였다.
사용 함수
소스 코드 :
#include <bits/stdc++.h>
using namespace std;
string a, b, temp;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cin >> a;
cin >> b;
int i = 0;
while(i < 3) {
if(b[b.length() - 1] == 'B'){
temp = b.substr(0, b.length() - 1);
reverse(temp.begin(), temp.end());
}
else if(b[b.length() - 1] == 'A') {
temp = b.substr(0, b.length() - 1);
}
b = temp;
if(a.length() >= b.length()) {
break;
}
}
if(a == b) {
cout << "1" << "\n";
}
else {
cout << "0" << "\n";
}
return 0;
}