문제링크 : https://www.acmicpc.net/problem/12919
#include <bits/stdc++.h>
using namespace std;
string S, T, temp = "";
int result = 0;
void func(string s, string t)
{
if (s == t) { result = 1; return; } //바꿀 수 있을 때
if (s.size() >= t.size()) { return; } //바꿀 수 없을 때
if (t[t.size() - 1] == 'A') //맨 마지막이 A이면
{
temp = t;
temp.erase(temp.size() - 1); //A를 지우고 재귀
func(s, temp);
}
if (t[0] == 'B') //맨 처음이 B이면
{
temp = t;
temp.erase(temp.begin()); //B를 지우고 뒤집은 뒤 재귀
reverse(temp.begin(), temp.end());
func(s, temp);
}
}
int main()
{
cin >> S >> T;
func(S, T);
cout << result;
}
원래 문제대로 S -> T로 바꾸면 가짓수가 너무 많아서 복잡하므로 T -> S로 바꾸는 방법을 사용했다.
'백준 > 골드' 카테고리의 다른 글
[백준 20917번] 사회적 거리 두기 (C++) (0) | 2023.02.09 |
---|---|
[백준 24524번} 아름다운 문자열 (C++) (0) | 2023.02.07 |
[백준 9084번] 동전 (C++) (0) | 2023.02.05 |
[백준 16120번] PPAP (C++) (0) | 2023.02.05 |
[백준 11058번] 크리보드 (C++) (0) | 2023.02.05 |