JAVA

백준 알고리즘 17255

daehee719 2024. 3. 29. 19:00
728x90

 

import java.io.*;
import java.util.*;
public class Main {
    static BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); //선언
    static String s;

    static Set<String> set = new HashSet<>();

    public static void main(String[] args) throws IOException
    {
        s = bf.readLine();
        for (int i = 0; i < s.length(); i++) {
            dfs(i,i,String.valueOf(s.charAt(i)), "", "");
        }
        System.out.println(set.size());
    }

    public static void dfs(int left, int right, String newWay, String cur, String result)
    {
        result = result + cur + newWay;
        boolean canGoLeft = left - 1 < 0 ? false:true;
        boolean canGoRight = right + 1 > s.length()-1 ? false:true;
        if( !canGoLeft&&!canGoRight)
        {
            //System.out.println(result);
            set.add(result);

            return;
        }
        if(canGoLeft)
        {
            String news = String.valueOf(s.charAt(left-1));
            dfs(left - 1,right, news, cur + newWay, result);
        }
        if(canGoRight)
        {
            String news = String.valueOf(s.charAt(right+1));
            dfs(left,right+1, news,cur + newWay,result);
        }


    }
}
728x90