ebisukeプログラミング初心者脱出黙示録

30歳を過ぎてから始めたプログラミングと競プロの記録。Pythonで取り組んでいます。Arduinoで電子工作も

AtCoder-ABC212 A - Alloy / B - Weak Password【Python解答例】

f:id:ebisuke33:20210731223335p:plain

AtCoder Beginner Contest212のA とB問題についてPythonの解答例を記事にしていきます。
AtCoder Beginner Contest 212 - AtCoder



AtCoder Beginner Contest212 A - Alloy

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

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でした。