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