C++/백준 C++

[C/C++] 백준 12904번 A와 B

CE : 하랑 2023. 12. 17. 15:13

 

 

 

 

 

코드

#include <iostream>
#include <string> 
#include <algorithm> // reverse

using namespace std;

// int* : 포인터, string& : 레퍼런스 
int AB(const string _s, string& _t, int* _result) {
    
    while (true) {
        if (_s.size() == _t.size()) {

            if (_s == _t) { // 문자가 하나씩 남았을 때 같을 경우는 S를 T로 만들 수 있다.
                *_result = 1;
            }

            break;
        }

        if (_t[_t.size() - 1] == 'A') { // 문자열의 뒤에 A를 추가한다. -> 반대로 진행 맨 뒤 문자가 A일 경우 빼주기 
            _t.pop_back();
        }
        else { // 문자열을 뒤집고 뒤에 B를 추가한다. -> 반대로 진행
            _t.pop_back();
            reverse(_t.begin(), _t.end());
        }
    }

    return *_result;
}

int main()
{
	cin.tie(0); // 코드를 작성하면 입출력 속도가 빨라진다. -> C와 C++ 표준 stream의 동기화를 비활성화
	cout.tie(0); // C++의 입출력인 cin, cout만 사용하도록 주의해야합니다.

    string s, t;
    int result=0;

    cin >> s >> t;

    cout<<AB(s, t, &result);
}