はじめに
こんにちは たそ(@taso_int)です。
応用情報はぼちぼち勉強しています。
やっぱり応用は応用で難しいですね。
今日は昨日開催されたAtCoderのABC218の自分が解けたところの
解説をしたいと思います。(毎週出来たらすごいね)
ちなみに言語はPython3です
私の結果
20分遅刻した
— taso@何も分からん (@taso_int) 2021年9月11日
taso_intさんのAtCoder Beginner Contest 218での成績:7830位
パフォーマンス:68相当
レーティング:96→92 (-4) :(#AtCoder #ABC218 https://t.co/xjueQutZqV
ABの2完でした。(遅刻したせいでレート落ち)
今回CがDよりも難易度が高いとのこと
(アルゴリズムよりかは実装の問題らしい)
A問題
問題はこちら
https://atcoder.jp/contests/abc218/tasks/abc218_a
入力が結構癖があるなと感じました。
考え方としてはN番目の文字がoであればYes
N番目の文字が☓であればNoという動作をすればいいと思いました。(自分の実装は○以外はNoにしています
)
実装例
N = int(input()) S = input() ans = 'No' if S[N-1] == 'o': #0から始まるので-1をする ans = 'Yes' print(ans)
注意するところとすればPythonの文字の始まりは0からということですね。
B問題
問題はこちら
https://atcoder.jp/contests/abc218/tasks/abc218_b
これもまた癖がある入力
考え方としてはA〜Z、1〜26までは必ず存在するので、
N番目を文字を出力して足していけばいいということです。
例
3 26
A〜Zで3番目はC 26はZ これらを足してCZを表示
実装例
l = 'abcdefghijklmnopqrstuvwxyz' #アルファベットの型 P = list(map(int,input().split())) #リストじゃなくても良い ans ='' #空文字 for i in P: ans = ans + l[i-1] #空文字にN番目の文字を足す print(ans)
これも文字の始まりは0からということに気をつけましょう
最後に
レートが落ちてしまいましたが、仕方ないですね。
今AB問題とC以降の問題のレベルがかなり離れているので、
いかに早くABを解くことができるかがスコアに響きそう
(入茶したい)