회문2


Software Expert Academy [1216] 회문2

문제보기
Alt text

풀이

  • 회문 중 가장 긴 길이를 출력한다. 이때, 출력에서 tc를 출력하면 오답이고, T를 출력해야함을 주의한다..

소스코드

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
 
public class Solution {
    private static String[][] map;
    private static int[] result;
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
 
        for (int tc = 1; tc <= 10; tc++) {
            int T = sc.nextInt();
            result = new int[101];
            map = new String[100][100];
 
            for (int i = 0; i < 100; i++) {
                String str = sc.next();
                map[i] = str.split("");
            }
 
            findPalindrome(true);
            findPalindrome(false);
 
            System.out.println("#" + T + " " + findLongestStr());
        }
    }
 
    private static void findPalindrome(boolean isRightCheck) {
        List<String> strList = new ArrayList<>();
 
        for (int i = 0; i < 100; i++) {
            for (int j = 0; j < 100; j++) {
                for (int k = 0; k < 100 - j; k++) {
                    if (isRightCheck) {
                        strList.add(map[i][j + k]);
                    } else {
                        strList.add(map[j + k][i]);
                    }
 
                    if (isPalindrome(strList)) {
                        int length = strList.size();
                        result[length] = result[length] + 1;
                    }
                }
 
                strList.clear();
            }
        }
    }
 
    private static boolean isPalindrome(List<String> strList) {
        int strLength = strList.size();
 
        for (int i = 0; i < strLength / 2; i++) {
            String checkStr1 = strList.get(i);
            String checkStr2 = strList.get(strLength - 1 - i);
 
            if (!checkStr1.equals(checkStr2)) return false;
        }
 
        return true;
    }
 
    private static int findLongestStr() {
        for (int i = 100; i > 0; i--) {
            if (result[i] != 0) {
                return i;
            }
        }
 
        return -1;
    }
}