[백준] 미국 스타일 (2712)(kotlin)

문제 설명

백준 2712번 문제 링크

입력 및 출력

» 입력

첫째 줄에 테스트 케이스의 개수 T(1<=T<=1,000)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 숫자는 값이고, 두 번째 등장하는 문자는 단위이다. 값은 소수일 수도 있고, 이 경우 소수점 아래 최대 넷째 자리까지 주어진다. 단위는 kg, lb, l, g 중 하나이며, 순서대로 킬로그램, 파운드, 리터, 갤런이다.

» 출력

각 테스트 케이스에 대해서 바꾼 값과 단위를 출력한다. 값은 반올림해서 소수점 4째자리까지 출력한다. 단위는 kg, lb, l, g중 하나이며, 설명은 입력 설명에 있다.

예제 입출력(테스트케이스)

입력 출력
5
1 kg
2 l
7 lb
3.5 g
0 l
2.2046 lb
0.5284 g
3.1752 kg
13.2489 l
0.0000 g

문제 풀이1

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    repeat(readLine().toInt()) {
        val (weight, cat) = readLine().split(" ")
        println(converter(weight.toDouble(), cat))
    }
}

fun Double.kgToPound(): Double = this * 2.2046
fun Double.poundToKg(): Double = this * 0.4536
fun Double.literToGallon(): Double = this * 0.2642
fun Double.gallonToLiter(): Double = this * 3.7854

fun converter(weight: Double, cat: String): String {
    return when (cat) {
        "kg" -> { "%.4f".format(weight.kgToPound()) + " lb" }
        "lb" -> { "%.4f".format(weight.poundToKg()) + " kg" }
        "l" -> { "%.4f".format(weight.literToGallon()) + " g" }
        else -> { "%.4f".format(weight.gallonToLiter()) + " l" }
    }
}