たそ@ITインフラ初心者

taso@初心者エンジニア

新卒2年目 エンジニアが適当に語るブログてす

今週のAtCoder ABC218のAB問題をPythonで解く

はじめに

こんにちは たそ(@taso_int)です。
応用情報はぼちぼち勉強しています。
やっぱり応用は応用で難しいですね。
今日は昨日開催されたAtCoderのABC218の自分が解けたところの 解説をしたいと思います。(毎週出来たらすごいね)
ちなみに言語はPython3です

私の結果

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を解くことができるかがスコアに響きそう
(入茶したい)