[백준] 16진수 (1550)(kotlin)
문제 설명
16진수 수를 입력받아서 10진수로 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 16진수 수가 주어진다. 이 수의 최대 길이는 6글자이다. 16진수 수는 0~9와 A~F로 이루어져 있고, A~F는 10~15를 뜻한다. 또, 이 수는 음이 아닌 정수이다.
출력
첫째 줄에 입력으로 주어진 16진수 수를 10진수로 변환해 출력한다.
테스트 케이스
입력 | 출력 |
---|---|
A | 10 |
13F | 319 |
문제 풀이1
import java.io.BufferedReader
import java.io.InputStreamReader
import kotlin.math.pow
fun main(args: Array<String>) = with(BufferedReader(InputStreamReader(System.`in`))) {
val hex = readLine().map { hexToDec(it) }
var length = hex.size
println(hex.fold(0) {total, hex ->
length--
total + (hex * 16.0.pow(length)).toInt()
})
}
fun hexToDec(hex: Char): Int {
return when (hex) {
'A' -> 10
'B' -> 11
'C' -> 12
'D' -> 13
'E' -> 14
'F' -> 15
else -> hex.toInt() - 48
}
}
문제 풀이2
import java.io.BufferedReader
import java.io.InputStreamReader
fun main(args: Array<String>) = with(BufferedReader(InputStreamReader(System.`in`))) {
println(readLine()!!.toInt(16))
}