mery's Notes

めりーがプログラミングしたりします。

MENU

AtCoder Beginner Contest (ABC) 219 Pythonで参戦しました A、B2完 解説あり

後編(C問題)はこちら

mery-kirokudayo.hateblo.jp

f:id:mery_poke:20211101225017p:plain

本日のAtCoder Beginner Contest (ABC) 219 Pythonで参戦しました。

結果はA、B二完でした。
パフォーマンスは158。
ここ最近は200を割ってなかっただけに悔しい。

いやー、C問題難しかったなぁ・・・

でも、パフォーマンス見たらC問題が灰diff適正くらいのパフォーマンスだったのでショック・・・。

というわけで問題の解説もしてきます。

いつも通り、言語はPython、提出はPyPyです

目次

A問題

問題文

A - AtCoder Quiz 2

次のランクになるにはあと何スコア必要かを求める問題ですね。

雀魂・・・うっ、頭が・・・

それでは方針を。
1. それぞれの場合に場合分け
2. それぞれの場合で出力する

A問題なので、複雑じゃないですね。

実装

x = int(input())
if 0 <= x < 40:
    print(40-x)
elif 40 <= x < 70:
    print(70-x)
elif 70 <= x < 90:
    print(90-x)
else:
    print("expert")

if文で各ランクの場合分けをしています。

各ランクの次のランクの下限から得点xを引けば終了です。

解説するところもないね。

B問題

問題文

B - Maritozzo

マリトッツォのように三分割された文章を繋ぎ合わせる問題。

え、マリトッツォがわからない??
シュークリームっぽいお菓子です。
食べたこと無いけど美味しそう。

というわけで方針を
1. Tの長さだけループを回す
2. 各Tのi番目の要素について、対応する文字列を追加する。
3. ansを出力

いざ、実装

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

ans = []

for i in range(len(t)):
    if t[i] == '1':
        ans.append(s1)
    elif t[i] == '2':
        ans.append(s2)
    else:
        ans.append(s3)
print("".join(ans))

はい、方針そのまんまです。
ループ回数もT回(103 < 108)なので、間に合います。

各ループで場合分けして、その場合に応じた文字列をansに追加していって、最後にansを出力して終了です。

今回場合分け多いな!!!

C問題

問題文

B - Maritozzo

わからん!!!無理や!!!

うーん、どう頑張ってもTLEになる未来しか見えない・・・。

明日ゆっくりやろうかな・・・

やりました。こちらです。

mery-kirokudayo.hateblo.jp

それでは。