본문 바로가기
알고리즘/백준

(백준/자바) 힌트문제3 01. 팰린드롬 - 백준 1254번 문제 : 팰린드롬 만들기

by son_i 2023. 8. 6.
728x90

1254번: 팰린드롬 만들기 (acmicpc.net)

 

1254번: 팰린드롬 만들기

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

www.acmicpc.net

너무 어렵게 생각한 것 같은데 생각보다 간단한 문제였다.

주어진 문자열이 처음부터는 아니더라도 중간 어딘가 ~ 끝에 팰린드롬이 있을 수도 있으니까 문자열 길이만큼 subString으로 잘라서 팰린드롬인지 검사하고 팰린드롬이라면 그 부분을 뺀 자른 인덱스 i 만큼 문자열 길이에 더해주면 되고

팰린드롬이 전혀 없었으면 기존 문자열 길이에 * 2 해야한다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.SQLOutput;
import java.util.Stack;

public class Palindrome_01 {
    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        Stack <Character> stack = new Stack<>();
        int answer = 0;
        boolean containsPal = false;
        int cnt = 0;

        //모든 문자열이 팰린드롬인지 판별
        for (int i = 0 ; i < str.length() ; i++) {
            if (isPalindrome(str.substring(i))) {
                System.out.println(str.length() + i);
                return;
            }
        }
        System.out.println(str.length() * 2);
    }
    public static boolean isPalindrome(String str) {
        int length = str.length();
        for (int i = 0; i < length / 2 ; i++) {
            if (str.charAt(i) != str.charAt(length - 1 - i)) {
                return false;
            }
        }
        return true;
    }
}