๐๋ฌธ์ ๋ณด๋ฌ๊ฐ๊ธฐ
๐จ๐ปํ์ด ๊ณผ์
๊ทธ๋ฆฌ๋ ๋ฐฉ์์ผ๋ก๋ ํ ์ ์๋ค๊ณ ํ๊ธธ๋, ์ด๋ป๊ฒ ํ๋์ง ๊ถ๊ธํด์ ๊ด๋ จ ๐ํํธ ๊ธ์ ์ฐพ์๋ดค์ต๋๋ค. ์ด๋ฐ ์๊ฐ์ ํ ์ ์๋ค๋... ๋๋จํ๋ค์. ์ธ์์๋ ์ฒ์ฌ๊ฐ ๋๋ฌด ๋ง์ต๋๋ค.
๊ธฐ์กด ๋ฌธ์์ด์ธ S์์ ๋ชฉํ๋ก ํ๋ ๋ฌธ์์ด T๋ก ๋ณํํ๋ ๊ฒฝ์ฐ์ ์๋ ๋๋ฌด ๋ง์๋ฐ ๋นํด, ๊ทธ ๊ฒฝ์ฐ์ ์๊ฐ ๋ค ์ฌ๋ฐ๋ฅธ ๊ธธ๋ ์๋๋๋ค. ๊ทธ๋ ๊ธฐ์, T์์ S๋ก ๋ฐ๋๋ก ๋ณํํ๋ ๊ฒ์ด ์์ด๋์ด๋๊ตฐ์. T์์ S๋ก ๋ณํํด ๋๊ฐ๋ ๊ณผ์ ์ S์์ T๋ก ๋ณํํ ๋์ ์ฌ๋ฐ๋ฅธ ๊ณผ์ ๋ง์ด ๋ด๊ฒจ ์์ ํ ๋๊น์.
๋ค์ ๋ฐฉ์์ ๋ฐ๋ผ T๋ฅผ S๋ก ๋ณํํ ์ ์์ผ๋ฉด True, T์ ๊ธธ์ด๊ฐ 1 ์ดํ๊ฐ ๋๋๋ฐ๋ S๊ฐ ์ ๋๋ค๋ฉด False๋ฅผ ๋ฐํํด์ฃผ๋ฉด ๋๊ฒ ์ต๋๋ค.
- ๋ฌธ์์ด T์ ๋ง์ง๋ง ๋ฌธ์๊ฐ A์ธ ๊ฒฝ์ฐ
- 1๋ฒ ์ฐ์ฐ์ธ "๋ฌธ์์ด์ ๋ค์ A๋ฅผ ์ถ๊ฐํ๋ค"๋ง ๊ฐ๋ฅ
- ๋ฐ๋๋ก ์ญ์ถ์ ํด ๋๊ฐ๋ ๊ณผ์ ์ด๋ฏ๋ก, T์ ๋ง์ง๋ง ๋ฌธ์์ธ A๋ฅผ ์ ๊ฑฐํ๊ณ ๋ค์ ๊ฒ์ฌ
- ๋ฌธ์์ด T์ ๋ง์ง๋ง ๋ฌธ์๊ฐ B์ธ ๊ฒฝ์ฐ
- 2๋ฒ ์ฐ์ฐ์ธ "๋ฌธ์์ด์ ๋ค์ง๊ณ , ๋ค์ B๋ฅผ ์ถ๊ฐํ๋ค"๋ง ๊ฐ๋ฅ
- ๋ฐ๋๋ก ์ญ์ถ์ ํด ๋๊ฐ๋ ๊ณผ์ ์ด๋ฏ๋ก, T์ ๋ง์ง๋ง ๋ฌธ์์ธ B๋ฅผ ์ ๊ฑฐํ๊ณ , T๋ฅผ ๋ค์ง์ ๋ค์์ ๋ค์ ๊ฒ์ฌ
โ๏ธ ์์ค ์ฝ๋ ๋ฐ ๊ฒฐ๊ณผ
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
#define FAST_IO ios::sync_with_stdio(false); cout.tie(NULL); cin.tie(NULL);
bool IsAvailable(const string& source, string currentString)
{
if (source == currentString) return true;
if (currentString.length() <= 1) return false;
if (currentString.back() == 'A')
{
currentString.pop_back();
return IsAvailable(source, currentString);
}
currentString.pop_back();
reverse(currentString.begin(), currentString.end());
return IsAvailable(source, currentString);
}
int main()
{
FAST_IO
string source, destination;
cin >> source >> destination;
cout << IsAvailable(source, destination);
return 0;
}
'๐คAlgorithm > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 2477๋ฒ | ์ฐธ์ธ๋ฐญ (Java) (0) | 2024.07.30 |
---|---|
[BOJ] 20056๋ฒ | ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด๋ณผ (Java) (1) | 2024.07.25 |
[BOJ] 14891๋ฒ | ํฑ๋๋ฐํด (C++) (0) | 2024.03.24 |
[BOJ] 2636๋ฒ | ์น์ฆ (C++) (1) | 2024.03.22 |
[BOJ] 14499๋ฒ | ์ฃผ์ฌ์ ๊ตด๋ฆฌ๊ธฐ (C++) (1) | 2024.03.17 |