おつり14916回
4388 ワード
📜 理解问题
春香はコンビニのカウンターで働いています.
お客さんは2元と5元の小銭しかありません.2元の硬貨と5元の硬貨は無限に多い.コインの個数は最小限にしなければならない.おつりがnなら、最小コインの個数を教えてくれるプログラムを書いてください.
例えば、15元なら5元3個、14元なら5元2個、2元2個の計4個、13元なら5元1個と2元4個の計5個、硬貨の個数が一番少ない.
💡 問題の再定義
小銭を5元と2元で最も少ない硬貨を渡すときは、この硬貨の個数を印刷します.
▼▼▼計画作成
グリディアルゴリズムを使用すると、最小限のコインを選択できます.まず、5元が一番多く使われているのはコインが一番少ないので、まず5元を減らすことができるかどうかを考えます.この場合、以下の2点を考慮します.
1.今探しているお金は5元より大きいです.
2.今戻ってきた小銭から5元差し引いた金額は5元か2元に分けるべきです.
上記の手順が満たされた場合、5元を減算し、残りの金額で比較します.5元を減算できない場合は、上記の手順と2元を再比較し、2元を減算できない場合は-1を出力します.
💻 計画の実行
if __name__ == '__main__':
n = int(input())
cnt = 0
while n > 0:
if n >= 5 and ((n - 5) % 5 == 0 or (n - 5) % 2 == 0):
n -= 5
cnt += 1
elif n >= 2 and ((n - 2) % 5 == 0 or (n - 2) % 2 == 0):
n -= 2
cnt += 1
else:
cnt = 0
break
if cnt:
print(cnt)
else:
print(-1)
🤔 振り返る
これはグリディアルゴリズムで解決できる問題です.グリディアルゴリズムは、現在、上記の問題を解決するのに最も適したアルゴリズムである.
Reference
この問題について(おつり14916回), 我々は、より多くの情報をここで見つけました https://velog.io/@delicate1290/백준-문제-풀이-거스름돈-14916번-f70o7zhhテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol