[백준] 미국 스타일 (2712)(kotlin)
문제 설명
입력 및 출력
» 입력
첫째 줄에 테스트 케이스의 개수 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" }
}
}