#문제 해결 방법

 

가장 중요한 생각은

S ->T로 가는건 가지수가 많기 때문에

시간초과가 나기 매우매우 쉽다는것이다.

혹시 하더라도 일치하는지 확인하는 조건때문에 kmp 가 필요할지도 모르겟다.

 

때문에 T->S 로 가는 것은 매우 가지수가 적다.

왜냐면 뒤에 A가 있다면 A를 추가한것이기 때문에 빼주고

B가 잇다면 B를 뒤집고 추가해준거라 빼고 뒤집어 주면된다

 

이 힌트를 알 수 있는것은

바로 추가하는 방향이 한쪽으로만 이뤄진다는 것이다.

 

만약 양방향으로 추가가 되었다면 불가능했을 것이다.

 

#전체 코드

#include <iostream>
#include <vector>
#include <climits>
#include <algorithm>
using namespace std;





int main() {
    string s,t;
    cin >> s >> t;



    while (true) {

        if (t[t.length() - 1] == 'A') {
            t.pop_back();
        }
        else {
            t.pop_back();
            reverse(t.begin(), t.end());
        }

        if (t.length() == s.length()) {
            if (s == t) {
                cout << 1 << '\n';
            }
            else {
                cout << 0 << '\n';
            }
            break;
        }
    }


    return 0;
}

'[백준] > C++' 카테고리의 다른 글

백준 1059번 좋은 구간 [C++]  (0) 2024.07.25
백준 1522번 문자열 교환 [C++]  (6) 2024.07.24
백준 31962번 밤양갱 [C++]  (3) 2024.07.23
백준 8972번 미친 아두이노 [C++]  (0) 2024.07.18
백준 2638번 치즈 [C++]  (0) 2024.07.18

+ Recent posts