오늘은 여기까지

[swea/20019] 회문의 회문 - Java 자바 본문

Problem Solving

[swea/20019] 회문의 회문 - Java 자바

dev-99 2024. 11. 17. 20:57

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AY2hjCWKbykDFATh

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

전체코드

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());
        
        for (int tc = 1; tc <= T; tc++) {
            String str = br.readLine();
            System.out.println("#" + tc + " " + (isPalindromeOfPalindrome(str) ? "YES" : "NO"));
        }
    }
    
    public static boolean isPalindromeOfPalindrome(String str) {
        int N = str.length();
                
        // 전체 문자열이 회문인지 확인
        if (!isPalindrome(str, 0, N - 1)) {
            return false;
        }
        
        // 앞쪽 (N-1)/2 글자가 회문인지 확인
        if (!isPalindrome(str, 0, (N-1)/2 - 1)) {
            return false;
        }
        
        // 뒤쪽 (N-1)/2 글자가 회문인지 확인
        if (!isPalindrome(str, N - (N-1)/2, N - 1)) {
            return false;
        }
        
        return true;
    }
    
    public static boolean isPalindrome(String str, int start, int end) {
        while (start < end) {
            if (str.charAt(start) != str.charAt(end)) {
                return false;
            }
            start++;
            end--;
        }
        return true;
    }
}