kutakuta

雑記です

View My GitHub Profile

016 - Minimum Coins(★3)

2025-09-30

問題

解答

提出 #69750453

type I = [[Int]]
type O = Int

solve :: I -> O
solve [[n],[a,b,c]] = x
    where
        x = minimum [i+j+k| i <- [0..9999], j <- [0..9999-i], n >= i*a+j*b, let d = n - (i*a + j*b), d  `mod` c == 0, let k = d `div` c, i+j+k <= 9999]

「A円硬貨、B円硬貨、C円硬貨の枚数を足した数」のリストを、リスト内包表記で記述した。Cの数をA、Bの数から求めることで、3重ループが2重ループになる。