初心者のためのガイド

Latest Author yuki2006 /Date 2017-04-13 18:17:50 / Views 26739
10 (Favした一覧ページは作成中です。)
初心者の方へのガイドです。
特におすすめの問題を掲載しています。

まずはじめに

環境を準備しましょう

手元に使い慣れたテキストエディタや統合開発環境を準備しましょう。これから環境を構築するときは、環境構築まとめが参考になります。

環境の構築が面倒な場合は、以下のようなオンラインコンパイラを利用することも出来ます。

チュートリアルの問題を解いてみましょう!

これらの問題から始めて、問題の入出力の方法に慣れましょう。コードを書いて、提出ページでコードを提出してみましょう。
入出力の方法が分からない場合は、言語別標準入出力を参考にしてください。

No.9000 Hello World!(テスト用)
簡単な文字列を出力する問題です。

No.480 合計
与えられた数値を使って合計値を求める問題です。

No.9001 標準入出力の練習問題(テスト用)
整数や文字列の入力を受け取る問題です。

No.9008 空白区切りで与えられる数値データの合計値を求める(テスト用)
No.9009 改行区切りで与えられる数値データの合計値を求める(テスト用)
空白や改行区切りで与えられる問題に慣れましょう。

No.9002 FizzBuzz(テスト用)
入力した値を基に、簡単な処理をしてから出力する問題です。

テストケース・解説について

このサイトでは、問題を解かなくてもテストケースと解説が表示できます。
ですが、悩まずに見てしまうと力にならないと思いますので、なるべく自力で考えてどうしても詰まったら見るようにしましょう。

簡単な問題を解いてみよう(★)

競技プログラミングをしたことない方でも比較的簡単に解けると思われるシンプルな問題です。
概ね制約を意識しなくても解ける問題です。

No.46 はじめのn歩

No.388 階段 (1)

No.188 HAPPY DAY

No.264 じゃんけん

No.207 世界のなんとか

No.32 貯金箱の憂鬱

No.163 cAPSlOCK

No.289 数字を全て足そう

No.275 中央値を求めよ(ソートが必要)

考察が必要な競技よりの問題

No.143 豆

No.56 消費税 (小数誤差に注意)

No.5 数字のブロック (コーナーケースに注意)

No.63 ポッキーゲーム

No.481 1から10

No.289 数字を全て足そう (文字の操作の基本)

No.47 ポケットを叩くとビスケットが2倍 (少し考察が必要)

No.48 ロボットの操縦 (コーナーケースに注意)

No.69 文字を自由に並び替え (競技プログラミングでよくある問題の読み替え問題)

他にも簡単な問題(★)はたくさんあります。問題一覧から問題を選んで解いてみましょう。

アルゴリズム寄りの問題を解く(★★)

(★1が解けるようになってきた方だと)解けそうで解けなさそうな問題だと思います。

ここから、探索系アルゴリズムが必要になってきます。
制約も意識しないといけない問題が出てきます。
制約を見たら、簡単な解法では解けない。もしくは、制約が小さいので、全て列挙する事が可能かもしれません。

少し考察も必要になってきて、競技では最初のハードルである動的計画法を使う問題もあります。
競技プログラミングをよくしてる方から典型かもしれません。

慣れないとデバッグが少し大変になってくるので、バグらせないように実装するスキルも必要になってきます。

正直、直接業務では出てこないような処理かもしれません。
(ですが、運営者的には、エンジニアはこれらの問題も解けるようなスキルがある世の中になってほしいと願ってます。)

No.3 ビットすごろく

No.45 回転寿司

No.4 おもりと天秤

No.7 プライムナンバーゲーム

No.90 品物の並び替え

No.179 塗り分け

アルゴリズムの参考

  • 深さ優先探索
  • 幅優先探索
  • 二分探索
  • 素因数分解
  • エラトステネスの篩(素数)
  • ユークリッド互除法(最大公約数・最小公倍数)
  • 動的計画法・メモ化再帰
  • しゃくとり法
  • Imos法(累積和手法)

難しい問題をとく(★★★以上)

より複雑なアルゴリズム・データ構造を使用した問題が出てきます。
考察も必要になり、事前にアルゴリズムについて知ってないと厳しいかもしれません。
この辺が解けると、十分競技プログラミングの問題が解けるようになってると思われますので、どんどん解いていきましょう

アルゴリズムの参考

  • ワーシャルフロイド法
  • ダイクストラ法
  • Nim
  • Segment Tree/BIT(Fenwick Tree)
  • 優先度付きキュー
などなど