Axolotl

BOJ 12904 A와 B

15 Dec 2024

문제에서 알려준 두 가지 연산으로 문자열 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; 
    }
}