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

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

AtCoder-ABC211 A - Blood Pressure / B - Cycle Hit【Python解答例】

f:id:ebisuke33:20210724222925p:plain

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



AtCoder Beginner Contest211 A - Blood Pressure

A - Blood Pressure

問題文

収縮期血圧 A と拡張期血圧 B が与えられます。
平均血圧 C を求めてください。
ただし、平均血圧は以下のように定義されるとします。

C=A−B / 3+B

制約

・50≤B≤A≤300
・入力に含まれる値は全て整数である

解答例

a, b = map(int,input().split())

ans = b + (a - b) / 3

print(ans)

解説

問題文の計算式の通りに平均血圧を答える問題です。

入力を受け取ってansに計算結果を代入します。

除算の計算の順序に注意して演算を行えばOKでした。



AtCoder Beginner Contest211 B - Cycle Hit

B - Cycle Hit

問題文

4 つの文字列 S1,S2,S3,S4 が与えられます。
この中に、H , 2B , 3B , HR がそれぞれ 1 つずつあるか判定してください。
ただし、全ての Si は H , 2B , 3B , HR のいずれかと一致します。

制約

・Si は H , 2B , 3B , HR のいずれかと一致する

解答例

S = []
for i in range(4):
    S.append(input())

S.sort()

flag = True
if S[0] != "2B":
    flag = False
if S[1] != "3B":
    flag = False
if S[2] != "H":
    flag = False
if S[3] != "HR":
    flag = False

if flag:
    print("Yes")
else:
    print("No")

解説

与えられる4つの文字列にH , 2B , 3B , HRがひとつずつあるか答える問題です。

入力をすべて配列Sに格納し、ソートします。

もし、サイクルヒットの条件が満たされていれば、2B,3B,H,HRの順にリストに格納されているので、順番に確かめていきます。

どこかで文字列が異なっていたらflagをFalseにして未達成を記録しておきます。

最後にflagにあわせて出力すればOKです。



ABC211の関連記事はこちら
ebisuke33.hatenablog.com
ebisuke33.hatenablog.com