ALGORITHM

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

연듀 2022. 6. 19. 10:22

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

 

1254번: 팰린드롬 만들기

동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다. 동호는

www.acmicpc.net

 

 

import java.io.*;
import java.util.*;

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

      String str = br.readLine();
      int cnt = str.length();

      for(int i=0; i<str.length(); i++){
          if(isPalindrome(str.substring(i))){
              break;
          }
          cnt++;
      }
        System.out.println(cnt);

    }

    private static boolean isPalindrome(String str){

        char[] list = str.toCharArray();

        for(int i=0; i<Math.floor(str.length()/2); i++){
            if(list[i] != list[str.length()-i-1]){
                return false;
            }
        }
        return true;
    }
}

 

예제1인 abab를 예시로 들어 설명하면,

 

우선 substring으로 앞에서부터 문자열을 잘라 팰린드롬인지 확인한다.

abab는 팰린드롬이 아니므로 문자열의 길이인 cnt를 증가시킨다.

bab는 팰린드롬이므로 멈춘다.

이런식으로 문자열에서 팰린드롬을 발견한 순간 그 뒤 문자열을 팰린드롬 문자열 앞 문자열의 개수만큼 붙여주면 된다.