[백준] 진법 변환 (2745)(kotlin)

문제 설명

백준 2745번 문제 링크

입력 및 출력

» 입력

  • 첫째 줄에 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()
    )
}