[백준] 팰린드롬 만들기 (1254)(kotlin)
문제 설명
입력 및 출력
» 입력
첫째 줄에 문자열 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