問題 商品名と支払い金額を入力すると、お釣りの「小銭の枚数」を返す関数またはメソッドを実装せよ。商品名と価格は以下の通り。 お茶: 120円 コーラ: 150円 エナジードリンク: 280円 入力される通貨は日本円で、最大1000円までとする。 また、有効な貨幣は「500円」「100円」「50円」「10円」とする。 たとえば、「1000円でお茶を購入」すると、返却すべき金額は880円だが、釣銭は「500円×1, 100円×3, 50円×1, 10円×3」となる。返り値は、任意の形式のクラス、連想配列、オブジェクト、構造体、リストなどで表現してよい。 返り値は、この関数が他のエンジニアにより使われることを考慮し、使いやすい値とすること。 data class Money(val name:String, val amount:Int) fun calcOtsuri(good:String,inputAmount:Int):List<Money>{ val price=when(good){ "お茶"->{ 120 } "コーラ"->{ 150 } "エナジードリンク"->{ 280 } } var otsuri=inputAmount-price var otsuriList=MutableList<Int>() if(otsuri>=500){ otsuriList.add(500) } otsuri=otsuri-oturiList.sum() if(otsuri100>=100){ ((otsuri100)%100).forEach{ otsuriList.add(100) } } val otsuri50=otsuri100-oturiList.sum() if(otsuri50>=50){ otsuriList.add(50) } val otsuri10=otsuri50-oturiList.sum() if(otsuri10>=10){ ((otsuri10)%10).forEach{ otsuriList.add(10) } } // [500, 100, 100, 100, 50, 10, 10, 10] val moneyList= otsuriList.map{ val name=when(it){ 500->{"500円"} 100->{"100円"} 50->{"50円"} 10->{"10円"} } Money(name,it) } return moneyList }