ボクが問題を解くとき気をつけるべきこと

以下のことをちゃんと意識してするようにする。最近サンプルに対してのtry-and-error的な書き方をしてしまってきているので、注意喚起。

  • 問題を読み取る
    • 問題をきちんと理解する。(紙に図を書いたり)
    • 英語の解釈がわかりづらいときは、時間をかけてでも読み解く。(サンプルも見る)
    • 方針をちゃんと立て切ってからコードを書き始める。
  • 解き方を考える
    • 思いついたら、それが最適か?(もっと簡単に書ける方法はないか?)
    • 思いつかないときは、いくつか出力してみて法則がないか?
    • クリティカルケースはないか?
    • 結果が怪しくなるケースは書き出しておく。
  • コードを書いてる時
    • 配列のOutOfRangeをしていないか?(負の値、大きい値)
    • 関数にありえない値を渡していないか?(負の値、大きい値)
    • 変数のオーバーフローは?(桁溢れ、long longにしてない)
    • 小数の範囲はきちんとあっているか?(EPS忘れ)
    • ゼロで割ってないか?
    • dfsの呼び出し回数は見積もれているか?(スタック溢れ)
    • メモ化の作り方の間違いはないか?
  • コードを書ききったら
    • 最大・最小ケースは大丈夫か?(TLE、解なし、クリティカルケースも)
    • 大域変数と同じ局所変数の名前を付けてないか?
    • サンプルが通ったからといって、すぐに提出せずにコードをもう一度"すべて"見直す。