最終チェックのための項目だよ。自分の死因の12割ぐらいが網羅されてるよ。Java用だよ。

その解釈、本当に正しいですか?

  • 問題を精読する時間 <<<< 勘違いしたコードを書く時間
  • 問題文を読んだら必ずサンプルでためせ
  • ここまでしなければ問題の難易が把握できないので、問題を解く順序を間違えるんだ!


あせってsubmitするな!!

  • 2分ぐらいテストに費やしても得点はそんなに減りはしない。


intあふれはないか!!

  • オーダー的に余裕な問題、int同士の乗算を使う問題、巨大なint同士の加算を扱う問題によく見られるトラップ。
  • オーダーに余裕があるのなら、すべてのintをlongに変えてしまっても問題ない。場合によってはBigIntegerでも構わない。
  • 大抵の場合は問題にはならないが、longにすることで遅くなってしまってTLE, という場合もある。


コーナーケース(最小, 最大, 特殊なケース)で試したか!!

  • 巨大な制約を要求する問題、制約を書くのが簡単な場合はコーナーケースを試すべき。
  • コーナーケースだけ特殊な実装を要求される問題もかなりある。
  • 0をみかけたらコーナー!
  • 類推により解く問題では明らかに落とし穴になるのでコーナーケースチェックは必須


余りを求める問題で、マイナスになってはいないか!!

  • "-X"が出てくる場合、X%=MOD(-X+MOD)%MODの両方が必要!!


初期化をしているか!!


変数置換ミスはないか!!

  • for(int j = 0;j < n;i++){
  • コードをコピペして置換したときに起こる。2次元3次元で各軸を区別しない問題に多い。
  • 非対称なテストケースでためすのが吉。


すべての出力パターンをチェックしたか!!

  • 出力したあとreturnを忘れるとかとか!


提出用コードになっているか!!

  • サンプル入力は全て消しておく。
  • 余裕があればトレースもすべてコメントアウト。
  • package消し。Main縛り。Non-public縛り。


どうしても解決しないなら他の問題に行け!!

  • 時間の無駄。その問題を解き切ることが正義ではない。


定数を正しく指定しているか!

  • 定数、文字列を目コピした場合の写しミスとか。
  • 100000007と1000000007はどちらも素数でよく出るため、非常に間違いやすい。


複数の出力を改行で区切っているか!

  • 単純なケースばかりでは気づかない。2つ以上のケースで試すべし。


その問題番号、本当に合ってますか?


それでもだめなら

  • コーラック
最終更新:2011年04月20日 14:34