---
# System prepended metadata

title: Untitled

---

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

お茶: 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
}