最終チェックのための項目だよ。自分の死因の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次元で各軸を区別しない問題に多い。
- 非対称なテストケースでためすのが吉。
すべての出力パターンをチェックしたか!!
提出用コードになっているか!!
- サンプル入力は全て消しておく。
- 余裕があればトレースもすべてコメントアウト。
- package消し。Main縛り。Non-public縛り。
どうしても解決しないなら他の問題に行け!!
- 時間の無駄。その問題を解き切ることが正義ではない。
定数を正しく指定しているか!
- 定数、文字列を目コピした場合の写しミスとか。
- 100000007と1000000007はどちらも素数でよく出るため、非常に間違いやすい。
複数の出力を改行で区切っているか!
- 単純なケースばかりでは気づかない。2つ以上のケースで試すべし。
その問題番号、本当に合ってますか?
それでもだめなら
最終更新:2011年04月20日 14:34