マツシタのお勉強

Google code jam 2017 Problem A. Alphabet Cake 解法

問題

Dashboard - Round 1A 2017 - Google Code Jam

R行C列のグリッドが与えられる。各マスには?か異なるアルファベット1文字が書かれている。この時、以下の条件でのマスを別のアルファベットで埋めるプログラムを書く。

条件

  • には入力値として既に登場しているアルファベットのどれかを埋める
  • 同じアルファベットで描かれる図形は四角形で無ければならない

G??
?C?
?JJ
の場合
GGG
CCC
JJJ
が回答の1つとなる。

解法

まず、各行に着目し、行rが全ての場合と1つでもアルファベットが含まれている場合で場合分けをする。

行rにアルファベットが含まれている場合

この場合は、登場したアルファベットの両サイドの?をそのアルファベットで埋める。

行rが全ての場合

この場合は、前の行をそのままコピーしたもので埋める

ソースコード