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

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

AtCoder-ABC219 A - AtCoder Quiz 2 / B - Maritozzo【Python解答例】

サイシードプログラミングコンテスト2021(AtCoder Beginner Contest219)のA とB問題についてPythonの解答例を記事にしていきます。
Sciseed Programming Contest 2021(AtCoder Beginner Contest 219) - AtCoder



AtCoder Beginner Contest219 A - AtCoder Quiz 2

A - AtCoder Quiz 2

問題文

AtCoder 王国では、競技プログラミングの実力を測る検定試験が実施されています。

試験は 100 点満点であり、点数が高ければ高いほど、高いランクが認定されます。
ランクは以下のように定められています。

0 点以上 40 点未満のとき、初級
40 点以上 70 点未満のとき、中級
70 点以上 90 点未満のとき、上級
90 点以上のとき、エキスパート
高橋君は、この検定試験を受験し、X 点を取りました。

高橋君が認定されたランクより一つ高いランクとなるためには最低であと何点必要か求めてください。ただし、高橋君がエキスパートと認定された場合、それより高いランクは存在しないため expert と出力してください。

制約

・0≤X≤100
・X は整数

解答例

x = int(input())

if x >= 90:
    print("expert")
elif x >= 70:
    print(90-x)
elif x >= 40:
    print(70-x)
else:
    print(40-x)

解説

高橋君が次のランクにあがるために必要な点数を答える問題です。

高橋君の点数をxで受け取ります。

もし90点以上なら問題文通りexpertを出力します。
70 ~ 89点なら90 - xがエキスパートにあがるために必要な点数です。
40 ~69点なら70 - x が上級にあがるのに必要な点数、40点未満のとき40 - xが中級にあがるのに必要な点数になります。

必要な点数を出力すればOKでした。



AtCoder Beginner Contest219 B - Maritozzo

B - Maritozzo

問題文

英小文字からなる 3 つの文字列 S 1​ ,S 2​ ,S 3​ と、1、2、3 のみからなる文字列 T が与えられます。

T の各文字に対応する文字列を連結してできる文字列を出力してください。より厳密には、以下の指示にしたがって文字列を出力してください。

・1≤i≤∣T∣ を満たす整数 i に対し、文字列 s i​ を次のように定める。
・T の i 文字目が 1 のとき、S 1
・T の i 文字目が 2 のとき、S 2
・T の i 文字目が 3 のとき、S 3​
・s 1​ ,s 2​ ,…,s ∣T∣​ をこの順に連結してできる文字列を出力する。

制約

・1≤∣S 1​ ∣,∣S 2​ ∣,∣S 3​ ∣≤10
・1≤∣T∣≤1000
・S 1​ ,S 2​ ,S 3​ は英小文字からなる。
・T は 1、2、3 のみからなる。

解答例

s1 = input()
s2 = input()
s3 = input()
t = input()

ans = ""

for i in range(len(t)):
    if t[i] == "1":
        ans += s1
    elif t[i] == "2":
        ans += s2
    else:
        ans += s3

print(ans)

解説

Tの各文字に対応する文字列を連結した文字列を出力する問題です。

Tの文字列の長さ分だけループさせていきます。
Tのi文字目が1のときはansにS1を、2のときはS2、3のときはS3を足し合わせていきます。

すべて足し合わせたあとにansを出力すればACでした。