💻 C++ 기반
✔️ isPalinedrome() 함수에서 회문인지 확인
✔️ 회문이 아니라면, 서로 다른 두 인덱스에서 문자가 다르다는 뜻 -> 이 두 문자 중에서 하나를 제외시켰을 때 회문이면 유사회문이라고 판별
✔️ 이 모든 것이 성립하지 않으면 일반 문자열
#include <iostream>
#include <string>
using namespace std;
int isPalindrome(string str)
{
int len = str.length();
for (int i = 0; i < len / 2; i++)
{
if (str[i] != str[len - 1 - i])
{
return i;
}
}
return -1;
}
string removeChar(string str, int idx)
{
string result = "";
for (int i = 0; i < str.length(); i++)
{
if (i != idx)
{
result += str[i];
}
}
return result;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int T;
cin >> T;
while (T--)
{
string str;
cin >> str;
int result = isPalindrome(str);
if (result == -1)
{
cout << '0' << '\n';
continue;
}
else
{
if (isPalindrome(removeChar(str, result)) == -1)
{
cout << '1' << '\n';
continue;
}
else if (isPalindrome(removeChar(str, str.length() - 1 - result)) == -1)
{
cout << '1' << '\n';
continue;
}
else
{
cout << '2' << '\n';
continue;
}
}
}
return 0;
}