[백준] 팰린드롬 만들기 (1254)(kotlin)

문제 설명

백준 1254번 문제 링크

입력 및 출력

» 입력

첫째 줄에 문자열 S가 주어진다. S의 길이는 최대 1000이다.

» 출력

첫째 줄에 동호가 만들 수 있는 가장 짧은 팰린드롬의 길이를 출력한다.

예제 입출력(테스트케이스)

입력 출력
abab 5

문제 풀이1

import java.util.LinkedList

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    val str = readLine()
    val list = LinkedList<Char>()

    str.forEach { list.add(it) }
    var answer = check(list, list.size)

    if(answer > 0) {
        println(answer)
        return
    }

    for (i in str.indices) {
        str.forEach { list.add(it) }

        for (j in i downTo 0) {
            list.add(str[j])
        }

        answer = check(list, list.size)
        if(answer > 0) {
            println(answer)
            return
        }
    }
}

fun check(list: LinkedList<Char>, length: Int): Int {
    while (list.isNotEmpty()) {
        if (list.size == 1) {
            return length
        }

        if (list.pollFirst() != list.pollLast()) {
            list.clear()
            return -1
        }
    }

    return if (list.isEmpty()) length
    else {
        list.clear()
        -1
    }
}

// abab -> a 5
// aaabb -> aaa 8
// aaba -> a 5
// abcabc -> bacba 11