質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

880閲覧

AtCoder / Python エラーを引き起こす例外が見当たらない

kay_ventris4

総合スコア269

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/05/05 15:57

編集2021/05/05 15:58

#問題
イメージ説明
ABC121 C問題より

#方針
(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が出力されます。比較的シンプルな問題にも思うのですが、どのような取りこぼしや例外処理の怠りが原因となっていると推測されますでしょうか。雑な形の質問とはなってしまいましたが、ご教授のほど何卒よろしくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

dic = {} 略 dic[A] = B

辞書に、単価をキーとして、在庫数を格納しています。

しかし、すべての店について単価が異なるとは限りません。

現状だと、同じ単価が複数入力された場合、先行して入力した単価に対応する在庫数は、後に入力した方で上書きされてしまうと思います。

投稿2021/05/05 16:20

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kay_ventris4

2021/05/05 16:46

肝心なところを見落としておりました! ご丁寧にありがとうとざいました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問