AtCoder Beginner Contest 174 [ D - Alter Altar ]をPythonで解く(400点、🟫茶diff)
問題
赤と白の石がランダムにある。
・石を2個えらんで入れ替える
・石を1個えらんで、色を塗り替える
この操作を行なって、赤い石の左隣に白い石がない状態を作る。
最小で何回の操作が必要でしょうか?
解法
まず最終形を想定してみる。
石を1個塗りつぶす操作もあるから、赤が何個になるかわからない。
とりあえず最終形を想定して、操作回数を考えてみる。
最終形が赤が左に2個とすると、元の状態と比較すると操作が必要な部分がわかる。
赤から白が3箇所。
白から赤が1箇所。
操作としては、白と赤をスワップ1回。
すると白から赤になる場所が0なので、赤から白にする残り2箇所は塗り潰し。
よって操作は3回。
赤から白にする箇所と、白から赤にする箇所の数の大きい方が操作回数になる。
最終形は石がN個としてN個ある(赤が左からX個つまるパターンがN個)。
これのどれが正解かわからないので、総当たりでみていく。
操作回数が最も少ない最終形が正解。
公式放送のsnukeさんの説明をもとに。
キレイに解けるもんだなー。
説明されれば、わかるけどなー。