[백준] 17609번

Jeanine·2022년 5월 15일
0

baekjoon

목록 보기
114/120
post-thumbnail

💻 C++ 기반

회문
https://www.acmicpc.net/problem/17609

✔️ 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;
}
profile
Grow up everyday

0개의 댓글