1334번: 다음 팰린드롬 수백준/문제2024. 6. 21. 01:35
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/1334
언어 : Kotlin
문제 설명 :
팰린드롬 수는 앞으로 읽어도, 뒤로 읽어도 같은 숫자이다. 101, 4, 6666와 같은 숫자는 팰린드롬 수이고, 10, 564, 15452와 같은 숫자는 아니다.
어떤 수 N이 주어질 때, N보다 큰 팰린드롬 수 중에서 가장 작은 수를 출력한다.
입력 :
첫째 줄에 N이 주어진다. N은 최대 50자리인 양의 정수이다. 첫 숫자는 0이 아니다.
출력 :
첫째 줄에 문제의 정답을 출력한다.
제한 사항 :
- 시간 제한 : 2초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
12345 | 12421 |
858 | 868 |
1999 | 2002 |
1 | 2 |
9999 | 10001 |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val input = readLine().toBigInteger() + 1.toBigInteger()
val list = input.toString().map { it.toString().toInt() }.toMutableList()
for (i in 0 until 10000) {
for (j in 0 .. list.size / 2) {
if (list[j] < list[list.size - j - 1]) list[list.size - j - 2] += 1
list[list.size - j - 1] = list[j]
for (k in list.size - 1 downTo 0) {
if (list[k] >= 10) {
list[k] %= 10
if (k > 0) list[k - 1] += 1 else list.add(0, 1)
}
}
}
}
bw.write(list.joinToString(""))
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
26736번: Wynik meczu (0) | 2024.06.24 |
---|---|
17218번: 비밀번호 만들기 (0) | 2024.06.21 |
5698번: Tautogram (0) | 2024.06.21 |
20112번: 사토르 마방진 (0) | 2024.06.20 |
글로벌 포닉스 (0) | 2024.06.20 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!