問題
商品名と支払い金額を入力すると、お釣りの「小銭の枚数」を返す関数またはメソッドを実装せよ。商品名と価格は以下の通り。
お茶: 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
}