[백준] 진법 변환 (2745)(kotlin)
문제 설명
입력 및 출력
» 입력
- 첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.
» 출력
첫째 줄에 B진법 수 N을 10진법으로 출력한다.
예제 입출력(테스트케이스)
입력 | 출력 |
---|---|
ZZZZZ 36 | 60466175 |
문제 풀이1
import kotlin.math.pow
fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
val (N, B) = readLine().split(" ")
val length = N.length - 1
println(
N.foldIndexed(0.0) { index: Int, acc: Double, c: Char ->
val ch = when (c) {
in 'A'..'Z' -> 10 + (c - 'A')
else -> c - '0'
}
acc + ch.toDouble() * B.toDouble().pow(length - index)
}.toInt()
)
}