ABC212 A-Alloy
【Pythonでの解法】
まず解答例を下に示します。
A,B = map(int,input().split()) result = ["Gold", "Silver", "Alloy"] ans = "" if A > 0 and B == 0: ans = result[0] elif A == 0 and B > 0: ans = result[1] else: ans = result[2] print(ans)
1. 問題文の把握
純金と純銀の量が与えられるので、混ぜて生成された金属が「純金」「純銀」「合金」のどれに該当するかを判定します。判定基準は問題文にある通りで、純銀の量が0なら「純金」、純金が0なら「純銀」、純金、純銀ともに0より大きい量であれば「合金」となります。
2. コードを考える
(0) 標準入力
スペース区切りで2つの文字列が与えられます。この文字列は後々、数値として扱うためint型にしておきます。そこで、map()
を用いてint
とinput().split()
をまとめて行い、2つの数値を変数A,Bにそれぞれ代入します。
A,B = map(int,input().split())
(1) 下準備
今回の出力内容はGold
,Silver
,Alloy
なので、これを要素とするリストresultを予め用意しておくこととします。さらに、この出力内容を代入する変数ansも空の状態で事前に用意します。
ここまでのコードは次の通りです。
A,B = map(int,input().split()) #以下が新規追加分 result = ["Gold", "Silver", "Alloy"] ans = ""
(2) 根幹
問題文の条件の通りにif文を書いていきます。かつなら変数ansにreslut[0]
を代入することでansにはGold
が格納されます。同様に、条件に応じてresult[1]
,result[2]
をansに代入します。
尚、かつの場合は条件式を書かずelse
で事足ります。(という式があるため、A,B共に0ということはあり得ません。従って、「純金」「純銀」の条件以外は「合金」となります。)
A,B = map(int,input().split()) result = ["Gold", "Silver", "Alloy"] ans = "" #以下が新規追加分 if A > 0 and B == 0: ans = result[0] elif A == 0 and B > 0: ans = result[1] else: ans = result[2]
(3) 出力
変数ansにはGold
,Silver
,Alloy
のいずれかが格納されているので、最後にansを出力しておしまいです。
A,B = map(int,input().split()) result = ["Gold", "Silver", "Alloy"] ans = "" if A > 0 and B == 0: ans = result[0] elif A == 0 and B > 0: ans = result[1] else: ans = result[2] #以下が新規追加分 print(ans)
これで解答例のコードが完成しました!
3. まとめ
いかがでしたでしょうか?問題文も決して抽象的ではなく題意の把握は容易だったのではないでしょうか。
コードで用いる文法もif文が中心でしたので、書きやすかったはずです。
次回は引き続きABC212のB問題を扱う予定です。次回もお楽しみに!