0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

C++, Xcodeで競技プログラミングをしよう!

Last updated at Posted at 2021-01-01

はじめに

2021年、明けましておめでとうございます。皆様新年をいかがお過ごしでしょうか。

さて、今年2021年になって個人的に競技プログラミングに本格的に取り組もうと思い、この記事を書いています。というのも、今現在大学3年なのですが、もう時期大学4年になり、授業も少なくなるということで自分が時間が比較的確保できることになります。そこで、競技プログラミングを通してアルゴリズムとデータ構造をもう一度勉強し直そうと思い立ちました。

将来的にエンジニアとしてインターンに参加したり、就職をする上で、コーディングテストは避けては通れないことでしょう。

本記事が、Xcodeを用いてC++で競技プログラミングをするための指南書としてお役に立てば光栄です。

言語はC++

競技プログラミングやインターン・就職の際のコーディングテストではC++が用いられることが多いです。競技プログラミングではコンテストごとに使用可能な言語は異なりますが、ほとんどのコンテストで使うことができ、実行速度が速い、ライブラリが充実しているなどの理由によりC++は人気が高いです。実際に競技プログラミングの回答の6割以上がC++だと言われています。「C++は競技プログラミングやコーディングテストのための言語」と言っている人がいると聞いたこともありますが、C++を使いこなせて損はないと思います。

エディタはXcode

環境はMacを想定しているので、Xcodeを利用していきます。

Atcoder向けの設定

Xcodeを開くと以下のような画面が出てきます。
image.png

ここで、”Create a new Xcode project" をクリックします。

すると下のようなものが出てくると思います。
ここではどのようなプロジェクトにするかを選べます。例えば、iosのアプリ、apple watchのアプリを作るかなどを選べます。

上のタブの "macOS" を選択して "Command Line Tool" をクリックし、 "Next” をクリックします。
image.png

すると、以下のような画面が表示されます。

image.png

  • Project Name
    作りたいアプリケーションの名前です。
  • Team
    個人だと思うので適当にPersonal Teamでご自身の名前を埋めてしまいましょう。
  • Organization Name
    特に会社でするプロジェクトでもないと思うので個人名で結構です。
    Organization Identifierは自分のニックネームがあるかたは、「com.ニックネーム」としてください(なんでもいい)。
  • Language
    書きたいプログラミング言語の名前です。ここではC++を選びます。

埋め終えたらNextをクリックし、そのプロジェクトをどこに保存するかを選びます。

main.cppは以下のようになっていると思います。

main.cpp
//
//  main.cpp
//

#include <iostream>

int main(int argc, const char * argv[]) {
    // insert code here...
    std::cout << "Hello, World!\n";
    return 0;
}

これは、Hello Worldという文字を画面(コンソール)に出力するというプログラムです。
左上にある再生ボタンみたいなものを押すと(もしくはコマンド+R)、このファイルをコンパイル(機械語に変換)して走らせてくれます。

次に、main.cppと同じ場所にinput.txtを作成。
image.png

こうするとinput.txtをXcodeから直接編集できるのでテストデータの入力が楽になります。

input.txtをコードから読み込めるように設定を行う。
Edit Schemeを選択
image.png

下記で、"Options" タブを選択し、"Working Directory" を先程のinput.txtが格納されているディレクトリを指定する。

使い回す用のコード

コード部分だけに集中できるように、他の部分はあらかじめ設定する。

main.cpp
//  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;
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?