본문 바로가기
코딩테스트 준비/백준

[백준] 1254번 - 팰린드롬 만들기 [Java]

by mwzz6 2025. 2. 1.

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

 

[백준] 1254번 - 팰린드롬 만들기 [Java]
[백준] 1254번 - 팰린드롬 만들기 [Java]


1.  아이디어

 

현재 문자열이 팰린드롬이 아니면 뒤에 * 문자를 추가해서 *인 부분을 제외하고 팰린드롬이 되는지 판단하는 방식으로 해결했다.


2. 문제풀이

 

팰린드롬은 문자열의 양 끝부터 중간까지 계속 문자가 일치하는지 비교하는 방식으로 구할 수 있다. 이때 한쪽 끝 문자가 *이면 그냥 넘어가는 방식으로 구현해서 팰린드롬이 될 때까지 반복하도록 구현했다.


3. 코드

 

import java.io.*;

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

        String input = br.readLine();

        while (true) {
            if (isPalindrome(input)) {
                System.out.println(input.length());
                return;
            }

            input = new StringBuilder(input).append("*").toString();
        }
    }

    private static boolean isPalindrome(String str) {
        boolean flag = true;

        for (int i = 0; i < str.length() / 2; i++) {
            if (str.charAt(str.length() - 1 - i) == '*') continue;

            if (str.charAt(i) != str.charAt(str.length() - 1 - i)) {
                flag = false;
                break;
            }
        }

        return flag;
    }

}

4. 후기