// No.32 貯金箱の憂鬱 // https://yukicoder.me/problems/no/32 package no01.yukicoder.no32 /** インプットデータ */ data class InputData( /** 100 円硬貨の枚数 */ val yen100: Int, /** 25 円硬貨の枚数 */ val yen25: Int, /** 1 円硬貨の枚数 */ val yen1: Int ) /** * エントリポイント */ fun main(args: Array) { val input = getStandardInput() println(bank(input)) } /** * 硬貨の枚数が最も少なくなるように両替したとき、最小となる硬貨の数を返します。 */ fun bank(input: List): Int { val data = createInputData(input) var i100 = data.yen100 var i25 = data.yen25 var i1 = data.yen1 if (i1 != 0) { i25 += i1 / 25 i1 %= 25 } if (i25 != 0) { i100 += i25 / 4 i25 %= 4 } if (i100 != 0) { i100 %= 10 } return i1 + i25 + i100 } /** * 標準入力から取得した文字列をInputDataに変換して返します。 */ fun createInputData(input: List): InputData { return InputData( input[0].toInt(), input[1].toInt(), input[2].toInt() ) } /** * 標準入力から文字列を全て取得します。 */ fun getStandardInput(): List { val lines = mutableListOf() var line: String? line = readLine() while (line != null) { lines.add(line) line = readLine() } return lines }