[随時更新]コーディング対策~こんな時は、こうする~


この記事は

筆者がコーディング対策で学習する際の備忘録&これから、もしくは今絶賛コーディング対策中の方に向けてお助けとなる記事にしたいと思います。

メガベンチャーをはじめとするエンジニア募集企業では新卒の場合、書類選考とともにコーディング試験があります。その為、ただアプリを作ってそれを面接でアピるだけではダメで、コーディング試験もしっかりと得点しないといけないわけです。

と、筆者は最近気づき、急いで対策を始めました。

コーディング試験で用いる言語は、Pythonにしたいと思います。
理由は、文法がシンプルだから。
Androidエンジニアなので、Kotlinを使おうと思いましたが、コーディング対策をする意義は、コーディング試験を通ることが全てなので、それを達成しやすい言語を選択しました。

ケーススタディ集

二つの入力値をint型で受け取る

X, Y = map(int, input().split(" "))

数値リストで入力値を受け取る

 num_list = [int(i) for i in input().split()]

リストを並べ替えしたい

hoge_list.sort()

リストを分割したい

hoge_list = [0,1,2]
hoge_list.pop(0) 
print(hoge_list) # 0が出力される

リスト要素の和

sum(hoge_list)

文字列を一文ずつ扱いたい

hoge = input()
print(hoge[0])

# 出力値:h

これ、知らなかったわぁ。

タプルのリストを並び替えする時

sorted(hoge_list)

リストの任意要素を削除

hoge_list = [1,2,3]
del hoge_list[0:2]
print(hoge_list) #[3]

エラー編

EOF when reading a line #存在しない行にアクセスしようとしているよ

コラム欄的な

B問題くらいになってくると、問題が複雑になったり、標準入力が何なのか等色々と頭が複雑になってきます。
そこで、個人的にアルゴリズム構築のコツだと思うものを書いていきます。

答えは、「五文字化」です。

アルゴリズムを作る上で、難しいと思う原因は何なのか?と個人的見解をいうと、言語化ができてないことだと思っています。
例えば、以下の三種類に分けられます。

・目的(そもそも、何を出力するの?)
・入力(入力値は、なんなのか?)
・ターゲット(どの部分を実現するのか?)

この三つを箇条書きにまとめていきます。
そして、大事なのが書くことは必ず五文字以内で書くこと。
五文字以内にする理由は、折角、メモしても読み返す時間が掛かってしまうからです。
文章にすると長いので、把握しにくいし、覚えられないのです。

例えば、最終的に出力する値が、なんかの値の合計値としたら -> 合計
標準入力の一行目が、何かの処理の命令数だったら -> 命令数

そして、三つ目は一番重要です。
まず、どの部分を実現するのかを言語化することです。
というもの、コーディング試験においていきなり完成形を思い描くことは不可能です。
天才にしかできません。
A,B,C,Dの四パターンあるとしたら、取り敢えず、Aパターンだけでも動くようにするかと部分を積み重ねることで、いずれ四パターン含めて完成していくわけです。

実際には、入力例ごとに、あるいは一行ずつ実現することになるでしょう。
アルゴリズムを作るというのは、試行錯誤をすることとイコールだと考えます。

是非、使ってみてください!