회문 17609

LJM·2023년 2월 24일
0

백준풀기

목록 보기
116/259

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

풀긴했는데 억지로 푼 느낌이다;;

도움이된 반례모음

21
abbab
aab
aaab
aaaab
aaaaab
aaaaaab
axaaxaa
abcddadca
aabcbcaa
ababbabaa
abca
babba
sumumuus
XYXYAAYXY
abc
cccfccfcc
abcddcdba
ppbpppb
aabcdeddcba
aabab
aapqbcbqpqaa

ans
1
1
1
1
1
1
1
2
1
1
1
1
1
1
2
1
1
2
2
2
1

Process finished with exit code 0

import java.io.*;

public class Main
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int T = Integer.parseInt(br.readLine());

        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < T; ++i)
        {
            String temp = br.readLine();
            int ret = IsPal(temp, 0, temp.length()-1, 1);
            if(0 == ret)
                sb.append("0\n");
            else if( 1 == ret)
                sb.append("1\n");
            else
                sb.append("2\n");
        }

        System.out.println(sb);
    }

    public static int IsPal(String input, int l, int r, int chance)
    {
        int ret = 0;

        while(l <= r)
        {
            if(input.charAt(l) == input.charAt(r))
            {
                l++;
                r--;
            }
            else
            {
                if(chance == 1)
                {
                    boolean isPal = false;
                    if(input.charAt(l+1) == input.charAt(r))
                    {
                        chance--;
                        if(2 != IsPal(input, l+1, r, chance))
                            isPal = true;
                    }

                    if(input.charAt(l) == input.charAt(r-1))
                    {
                        chance--;
                        if(2 != IsPal(input, l, r-1, chance))
                            isPal = true;
                    }

                    if(false == isPal)
                    {
                        ret = 2;
                        break;
                    }
                    else
                    {
                        ret = 1;
                        break;
                    }
                }
                else
                {

                    ret = 2;
                    break;
                }
            }
        }

        return ret;
    }
}
profile
게임개발자 백엔드개발자

0개의 댓글