脱公務員からのデータサイエンティストの道

公務員、データサイエンス、勉強、書籍等についてのブログ

AtCoder Beginner Contest 218

どうも、モチロウです。

 

今週も例によってAtCoderのBeginerContestに参加しました(パチパチ)

 

今回も「乗り越えろレベルC」を目標に臨んだわけですが、Cの壁はまだまだ高く、昇っている最中に握力がなくなってあえなく撃沈しました・・・。

 

そしてなんとA問題もちょっとしたうっかりから一発目WAを出してしまうという、おてんばぶりを見事に発揮!!

 

もうちょっと落ち着けよと自分に言い聞かせるものの明日には忘れてしまうのであろう・・・

 

ということで、さっそく振り返ってみましょう。

使用言語はペェソン(python

 

A問題

N = int(input())
S = input()

if S[N-1] == 'o':
    print('Yes')
else:
    print('No')

 

この問題は入力値N番目に対応するSが○か×かで分ける条件分岐を書くのみ。

ただ、Sのインデックスはずれるのでそれをー1で調整することに注意。

そして、一発目のWAの原因は何だったのかというと・・・・・

出力の「Yes」を「Yse」にしていたのでした。

強いて読むなら「ワイズ」になるのだろうか。

 

 

B問題

P = list(map(int, input().split()))

alpha = 'abcdefghijklmnopqrstuvwxyz'

dic = {}
for i in range(26):
    dic[i+1] = alpha[i]

li = []
for i in P:
    mozi = dic[i]
    li.append(mozi)
print(''.join(li))

 

ちょっと頭をひねったけど、少し考えるとこれもすんなり解けましたね。

まずは入力Pの整数順がアルファベットの順番に対応するようにすること。

なので、一番初めに1から26の順番に対応するアルファベットを辞書型で準備してあげて、入力Pの整数順にキーを指定しバリューを呼び出し、準備した空リストに追加していく。

出力時はまとめる必要があるので、リストから文字列に変換するjoinメソッドを使用して終了。

 

うん、相変わらずの説明力不足を感じています。

 

さて、解けなかったレベルC、かなC、うらめC

解説は明日ゆっくり見るとして、何をやっていたかというと、pythonのライブラリであるnumpyを使って、条件分岐でFalseの時np.rot90メソッドを用いてグルグル回し、再度条件分岐にぶつけるということをやっていました。

 

「これでいけっぞ~」なんて思っていたわけですが、回転ができても平行移動の方法がわからなかった(個人的には要素の「#」の並びが一致するようにすればよいのかなと思っていた)ところで試合終了。

 

今回は、前回の途中でシャワーを浴びて惜しくも時間切れになってしまった反省点を踏まえて、途中退席をしなかったにも関わらず、惜しいところまでも行けなかったので、明らかに実力不足でした。

 

それでも普段使っていないnumpyとその一部メソッドの使い方を知ることができたので良かったとしましょう。(相変わらず自分へは甘い)

 

毎度振り返っているわけですが、そのたびに本業以外にアルゴリズムももっと勉強しないといかんですなぁ、としみじみ思っています。いや、マジで。

 

あと、公務員のこととか、転職のこともぼちぼち記事にしていきたいなぁ。

 

そして、眠いんだなぁ。

 

ということで、お疲れさまでした!