JOIG に挑戦しよう! ~出題内容から勉強法まで~

2021 年 4 月、女子中高生のみを対象としたプログラミングコンテスト「日本情報オリンピック 女性部門 (JOIG)」が初めて実施されることになりました。このページでは「どんな問題が出るの?」「どうやって勉強すればいいの?」といった皆さんの疑問を解決します。

情報オリンピックの過去問を見てみよう

情報オリンピックは 競技プログラミング と呼ばれる分野の中高生向けコンテストです。プログラミングを使って、時間内により多くの問題を解くことを目指します。実際にはどのような問題が出題されているのでしょうか。早速ですが、これまで開催されてきた日本情報オリンピック (JOI) の過去問を見てみましょう。

水道料金

2014 年 12 月実施・JOI 2014/2015 予選 問題1 (改)

問題文

あなたが住んでいる地域には水道会社が \(X\) 社と \(Y\) 社の \(2\) つあります。\(2\) つの会社の \(1\) ヶ月の水道料金は、\(1\) ヶ月の水道の使用量に応じて次のように決まります。

  • \(X\) 社:\(1\) リットル あたり \(A\) 円かかる。
  • \(Y\) 社:基本料金は \(B\) 円である。使用量が \(C\) リットル以下ならば、料金は基本料金 \(B\) 円のみがかかる。使用量が \(C\) リットルを超えると基本料金 \(B\) 円に加えて追加料金がかかる。追加料金は使用量が \(C\) リットルを \(1\) リットル超えるごとに \(D\) 円である。

あなたの家では \(1\) ヶ月の水道の使用量が \(P\) リットルであるとします。水道料金ができるだけ安くなるように水道会社を選ぶとき、家の \(1\) ヶ月の水道料金をいくらになるでしょうか。

ただし、\(A,B,C,D,P\) はすべて \(1\) 以上 \(10\,000\) の整数とします。

入力
入力は \(5\) 行とし、各行の内容は上から順に \(A,B,C,D,P\) とします。
出力

家の \(1\) ヶ月の水道料金を出力してください。

数年前の電力自由化に伴い、電気料金を比較するウェブページを見たことがある人も多いのではないでしょうか。それと似たような設定の問題です。

例えば、次のような入力を考えてみましょう。

9
100
20
3
10

つまり、あなたの家では \(P = 10\) リットルの水が使われています。よって、\(X\) 社の水道料金は \(A \times P = 9 \times 10 = 90\) 円です。対して、使用量が \(C = 20\) リットル以下なので、\(Y\) 社の水道料金は基本料金のみの \(B = 100\) 円になります。安いのは \(X\) 社の \(90\) 円なので、

90

とプログラムが出力しなければなりません。

この問題の解答プログラムを実際に作成してみました。次のテキストエリアに様々な入力を入れて、プログラムが正しく動作している様子を感じてください。

このような問題は手計算で解決することも可能なとても簡単なものです。しかし、どんな入力に対してもすぐに答えを求めてくれるプログラム、いわばこの問題専用の電卓のようなものを作成することが求められています。

まとめ

  • 情報オリンピックでは現実世界と関連した設定の問題も多く出題されています。
  • どんな入力が与えられても正しい答えを求めることができる「プログラム」を作成する必要があります。

JOIG に向けた勉強法・教材

競技プログラミングを今から始めるなら

下記の JOI 入門講座 (女性限定) で使用する JOI 公式テキストを、募集ページにて無料で公開しています。C++ の基礎を JOI の過去問も活用しながら丁寧に解説しています。

JOI の予選も実施されているプログラミングサイト AtCoder では、プログラミング言語 C++ の入門教材 APG4b が無料で公開されています。

過去問を通して学ぶなら

プログラミングサイト AtCoder において、JOI 過去問 が無料で公開されています。

また、有志によって JOI 過去問に非公式の難易度を付ける取り組みも行われており、ウェブページ AOJ/AtCoder-JOI において難易度順で問題に取り組むことができます。

書籍で本格的に学ぶなら

以下は、プログラミングがある程度できることを前提として、プログラミングをどう使えば問題が解決できるかについて説明している書籍です。

JOIG 関連イベント

自分ひとりで勉強することが難しい人は、次の関連イベントに参加してみましょう。同じ目標を持った仲間と一緒に短期間で集中して勉強できます。もちろん 参加費は無料 です。

JOI 入門講座 (女性限定)

JOI 入門講座 (女性限定) は、JOIG 2021 への参加を目指す 女子中高生対象のプログラミング講習会 です。プログラミングのいろはを学びます。講義と演習を組み合わせて実施し、演習時には大学生・大学院生のチューターから個別に指導を受けることができます。

2021 年 2 月下旬にオンラインで開催します。詳しくは募集ページをご覧ください。

JOI 春季ステップアップセミナー

JOI 春季ステップアップセミナーは、JOIG 2021 で 上位入賞することを目指す女子中高生のステップアップも促進するイベント です。大学生・大学院生のチューターと共に、グループ別でアルゴリズムに関する書籍などに取り組みます。

2021 年 3 月末にオンラインで開催します。詳しくは募集ページをご覧ください。

JOI 入門講座 (毎月開催)

JOI 入門講座は、JOIG 2021 や JOI への参加を目指す中高生対象のプログラミング講習会です。性別問わず参加できます。プログラミングのいろはを学びます。講義と演習を組み合わせて実施し、演習時には大学生・大学院生のチューターから個別に指導を受けることができます。

2021 年 4 月より毎月開催予定です。詳しくは募集ページをご覧ください。