#方針
(A,B)の組をソートされた辞書で管理します。
残りM本買わないといけないので、安い店の方から順々に店を回っていき、①その店のストックよりもさらに多くのドリンクを買わないといけない場合は、その店のストックを全部掻っ攫う ②その店のストックの分で、目標のM本を揃えることが出来る場合、必要な分だけ買って終了 の条件分岐でいけると考えました。
#コード
Python
1N, M = map(int, input().split()) 2 3dic = {} 4for _ in range(N): 5 A, B = map(int, input().split()) 6 dic[A] = B 7 8dic = dict(sorted(dic.items())) 9 10price = list(dic.keys()) 11stock = list(dic.values()) 12 13print(price) 14print(stock) 15 16bottles = M #あと何本必要か 17payed = 0 18 19for i in range(len(dic)): 20 21 if stock[i] >= bottles: 22 payed += price[i] * bottles 23 bottles -= bottles 24 25 elif stock[i] < bottles: 26 payed += price[i] * stock[i] 27 bottles -= stock[i] 28 29 if bottles == 0: 30 print(payed) 31 exit()
#質問
入力例では全て所望の数値が出力されるのですが、テストケースの途中でWAが出力されます。比較的シンプルな問題にも思うのですが、どのような取りこぼしや例外処理の怠りが原因となっていると推測されますでしょうか。雑な形の質問とはなってしまいましたが、ご教授のほど何卒よろしくお願い申し上げます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/05 16:46