AtCoder Beginner Contest (ABC) 219 Pythonで参戦しました A、B2完 解説あり
後編(C問題)はこちら
本日のAtCoder Beginner Contest (ABC) 219 Pythonで参戦しました。
結果はA、B二完でした。
パフォーマンスは158。
ここ最近は200を割ってなかっただけに悔しい。
いやー、C問題難しかったなぁ・・・
でも、パフォーマンス見たらC問題が灰diff適正くらいのパフォーマンスだったのでショック・・・。
というわけで問題の解説もしてきます。
いつも通り、言語はPython、提出はPyPyです。
目次
A問題
問題文
次のランクになるにはあと何スコア必要かを求める問題ですね。
雀魂・・・うっ、頭が・・・
それでは方針を。
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問題
問題文
マリトッツォのように三分割された文章を繋ぎ合わせる問題。
え、マリトッツォがわからない??
シュークリームっぽいお菓子です。
食べたこと無いけど美味しそう。
というわけで方針を
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問題
問題文
わからん!!!無理や!!!
うーん、どう頑張ってもTLEになる未来しか見えない・・・。
明日ゆっくりやろうかな・・・
やりました。こちらです。
それでは。