[SWEA] 1216. 회문2

1 분 소요

문제 링크

[SWEA] 1216. 회문2


풀이 과정

[SWEA] 1215. 회문1과 달리 길이가 주어지지 않아 모든 경우를 확인해봐야 합니다. 또한, 회문임이 확인되었을 때 최대 회문 길이를 갱신해주는 작업이 필요합니다.


코드

import java.util.Scanner;

public class Solution {
    static int answer;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        for (int tc = 1; tc <= 10; tc++) {
            sc.nextInt();
            char[][] map = new char[100][100];
            answer = 0;

            for (int i = 0; i < 100; i++) map[i] = sc.next().toCharArray();

            for (int i1 = 0; i1 < 100; i1++) {
                for (int j1 = 0; j1 < 100; j1++) {
                    StringBuilder sb = new StringBuilder();

                    for (int i2 = i1; i2 < 100; i2++) {
                        sb.append(map[i2][j1]);
                        check(sb.toString());
                    }

                    sb = new StringBuilder();

                    for (int j2 = j1; j2 < 100; j2++) {
                        sb.append(map[i1][j2]);
                        check(sb.toString());
                    }
                }
            }

            System.out.println("#" + tc + " " + answer);
        }
    }

    static void check(String s) {
        int left = s.length() / 2 - 1, right = s.length() % 2 == 0 ? s.length() / 2 : s.length() / 2 + 1;

        while (left >= 0 && right < s.length()) {
            if (s.charAt(left) != s.charAt(right)) return;
            left--;
            right++;
        }

        answer = Math.max(answer, s.length());
    }
}

카테고리:

업데이트:

댓글남기기