マツシタのお勉強

Mapのキーに独自キーを割り当てる D - すぬけ君の塗り絵 / Snuke's Coloring

問題

D: すぬけ君の塗り絵 / Snuke's Coloring - AtCoder Beginner Contest 045 | AtCoder

解き方

ポイントは以下の通り。

  • Mapを用いて3×3の四角形とその範囲に存在する黒マスの数を管理する。
  • 1つの黒マスが影響する四角形は9個(四角形の中央のマスを基準とする)
  • 全ての黒マスについて、影響する四角形が登場した数だけプラス。
  • 黒マスが含まれない四角形の数は全体から引く。

Mapのキーに独自キーを割り当てる。

今回のMapのデータ構造はキーを独自クラスのPoint(x, y座標を管理)にし、バリューはInt型とする。この時、Mapが持つメソッドcontainsKeygetなどを用いる際に、Pointのプロパティであるx, yの値が一致するか否かで実装したい。これは以下のように親クラスのメソッドをオーバーライドする必要がある。

このようにequalshashCodeメソッドをそれぞれオーバーライドすることで実装可能である。

ソースコード