概要
結論;macOSにXcodeをインストールすれば簡単にC++で競プロを始められます!
面接体験記を見ていると、出されたロジックをホワイトボードにコーディングしてみろ、と言われるそうで。自分の身にいつ降り掛かってもいいように対策しようと思いました。
しかし現在やっているiOSの本を使ってもMVCの構造やライブラリの使い方が主で、例えばソートや探索木とかは一生触らないだろうなあと。
どうしたらいいかとふと思い調べてみると、どうやら競技プログラミングを触ってみるのが良いようで。教科書と違い実践的であるのが良い、身につくまでできる気がする。
サイトは日本語情報が多そうなATCoderを選択。挫折しないことがまずは大事。
言語はC++を選択
使う言語は触ったことは無いがC++を選択。
これは競プロ回答の6割以上がC++のため、回答を参考しやすいだろうという理由。
またC++だとXcodeがあれば済むというのが大きい。(新しいIDEを用意するのも億劫ですし…)
言語はとりあえず使ってみて分からないときに初めて調べる「遅延評価勉強法」でやってみる。
Cと同じ感覚で使えるので、何かしら1言語やってたら学習コストは低いように思う。(今の所ですが)
エディタはXcodeを使用
XCodeは簡単にBreakPointを貼れるので、デバッグしながら変数の値を確認できるのは嬉しいです。
参考
1.2.2 Xcodeのインストールと簡単な使い方 ((C++からのプログラミング入門
XcodeとC++で競技プログラミングするときの初期設定の一例
ATCoder用の設定
Command Line Toolを選択
言語に「C++」を選択。
main.cpp
と同じ場所にinput.txt
を作成。
input.txt
をプロジェクトへ追加する。
こうするとinput.txt
をXcodeから直接編集できるのでテストデータの入力が楽。
input.txt
をコードから読み込めるように設定を行う。
Edit Scheme
を選択
下記を先程のinput.txt
が格納されているディレクトリを指定する。
動作確認のコード。提出時は//input from txt
を含めて下3行を削除するだけ。
使い回す用のコード
- コード部分だけに集中できるように、他の部分は何かしらで登録しておくと良いと思う。
- 私は下記をDashのスニペットに登録して使用している
- ライブラリも必要に応じて追加する必要はありそう
// main.cpp
// CppTest
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
int main(int argc, const char * argv[]) {
// input from txt (提出時にこの箇所は削除すること)
std::ifstream in("input.txt");
std::cin.rdbuf(in.rdbuf());
// cinを高速にするためのおまじない
cin.tie(0);
ios::sync_with_stdio(false);
/////////////////////
// Write code below /
/////////////////////
return 0;
}