コーディング試験対策としてHacker RankやAtcoderのチュートリアルが便利

現在エンジニア転職のための活動をしています。 先日、はじめてコーディング試験というものを経験しましたので、似たような経験をする人に役立つことを記事として残します。

コーディング試験では標準入力をうまく取れないと、あせります

先日、人生で初めて採用試験でコーディング試験を経験しました。 事前に、コーディング試験があるのはわかっていたのでHackerRankAtCoder:競技プログラミングコンテストを開催する国内最大のサイトといった競技プログラミングサイトで少しだけ練習をしていましたが、 実際の試験では、標準入力を取得する部分で想定以上に時間を取られてしまい、悲惨な結果となりました。

もし、今後初めてコーディング試験を受ける方は、標準入力の取得をしっかりとしておいてください。

問題を解く練習も大事ですが、普段から競技プログラミングをしていない人にとっては、時間を取られすぎるため、チュートリアルを解くだけで十分です。

その際、標準入力の取得については、サンプルをコピー・アンド・ペーストせず、しっかりと自分で書きましょう。 そうすれば本番で多少方法が違っても焦らず対処できます。

最低限チュートリアルをみよう

Hacker RankやAtcoderチュートリアルを、時間がなければ眺めるだけでもいいので、確認しておきましょう。

標準入力のとり方は、ローカルと本番で共通化しておこう

テストしながらコードを書いていく場合、毎回のテストを本番環境(ブラウザ)で実行するのは、時間がかかりすぎるため。 ローカルでテストするのが良いです。

標準入力を取るためのコードを本番とローカルで共通化していると、ローカルで完成したコードをそのままコピペすれば、提出できるのでおすすめです。

私がatcoderチュートリアルを解くときに、使ったテンプレートをおきます(標準入力を取る部分のみ)。 汚いコードですがあくまで参考まで。 言語はPythonです。

from pathlib import Path


def wrapp_get_input(inputs_generator):
    def get_input():
        if inputs_generator is None:
            return input().rstrip()
        else:
            try:
                return inputs_generator.__next__()
            except StopIteration:
                return None
    return get_input


p = Path(__file__)
path_to_file = p.parent.joinpath("input_data.txt")
if path_to_file.exists():
    with open(path_to_file) as f:
        inputs = f.readlines()

    inputs_generator = iter([i.rstrip() for i in inputs])
    get_input = wrapp_get_input(inputs_generator)
else:
    get_input = wrapp_get_input(None)

## ここまでで標準入力のとり方を本番環境と共通化しておく。get_inputで標準入力を取る。
## 上記は、基本的に使い回す。
## 以下は、https://atcoder.jp/contests/practice/tasks/practice_1 の場合の回答です。

a = int(get_input())
b, c = list(map(int, get_input().split(" ")))
s = get_input()

print("{} {}".format(sum([a, b, c]), s))