AtCoder-ABC212 A - Alloy / B - Weak Password【Python解答例】
AtCoder Beginner Contest212のA とB問題についてPythonの解答例を記事にしていきます。
AtCoder Beginner Contest 212 - AtCoder
AtCoder Beginner Contest212 A - Alloy
問題文
高橋くんは A グラムの純金と B グラムの純銀 ( 0 ≤ A , B , 0 < A + B ) をよく溶かした上で混ぜ合わせ、新たな金属を生成しました。
生成された金属は「純金」「純銀」「合金」のいずれでしょうか?
なお、生成された金属は
・0 < A かつ B = 0 なら「純金」
・A = 0 かつ 0 < B なら「純銀」
・0 < A かつ 0 < B なら「合金」
であるとみなします。
制約
・0 ≤ A , B ≤ 100
・0 < A + B
・A,B は整数
解答例
A, B = map(int,input().split()) if A > 0 and B == 0: print("Gold") elif A == 0 and B > 0: print("Silver") else: print("Alloy")
解説
Aグラムの純金とBグラムの純銀を混ぜるとき、混ぜた金属が何になるか答える問題です。
純金と純銀の重さA,Bを受け取ったあと、問題文の通りに条件分けを行い答えを出力するとOKです。
AtCoder Beginner Contest212 B - Weak Password
問題文
4 桁の暗証番号 X1X2X3X4 が与えられます。 番号は先頭の桁が 0 であることもあり得ます。 暗証番号は以下のいずれかの条件をみたすとき弱い暗証番号と呼ばれます。
・4 桁とも同じ数字である。
・1≤i≤3 をみたす任意の整数 i について、 Xi+1 が、 Xi の次の数字である。 ただし、 0≤j≤8 について j の次の数字は j+1 であり、 9 の次の数字は 0 である。
与えられた暗証番号が弱い暗証番号ならば Weak を、そうでないならば Strong を出力してください。
制約
・0≤X1,X2,X3,X4≤9
・X1,X2,X3,X4 は整数である。
解答例
x = input() flag = True if x[0] == x[1] and x[1] == x[2] and x[2] == x[3]: flag = False for i in range(3): if int(x[i]) >= 0 and int(x[i]) <= 8 and int(x[i]) == int(x[i+1]) - 1: continue elif int(x[i]) == 9 and int(x[i+1]) == 0: continue else: break else: flag = False if flag: print("Strong") else: print("Weak")
解説
4桁の暗証番号が"弱い"パスワードか答える問題です。
flagで弱いパスワードか管理しました。
2つ判別を行い、ひとつめは4桁がすべて同じ数字かどうかを確認しました。
もし、4桁とも同じ数字ならflagをFalseにします。
次はXi+1がXiの次の数字かどうかです。
ループ文で次の数字Xi+1から1を引いた値とXiが等しいか判定し、連続した数字でなければループをbreakします。
berakできないままループが終われば、4桁とも連続した数字であることがわかりますので、同じくflagをfalseにしました。
最後にflagに合わせて答えを出力すればOKでした。