Kazun の競プロ記録

競技プログラミングに関する様々な話題を執筆します.

AtCoder Beginner Contest 253 B問題 Distance Between Tokens

問題

atcoder.jp

提出解答

atcoder.jp

問題の概要

 H W 列からなるマス目のうち, ちょうど  2 つのマスにコマがある.

開始時点の状況は長さ  W H 個の文字列  S_1, \dots, S_H で表され,  S_i[j]={\tt o} であるとき, マス  (i,j) にコマがあり,  S_i[j]={\tt -} の場合はマス  (i,j) にコマはない.

一方のコマを左右上下のマスに移動させて, 他方のコマと同じマスにコマがあるようにしたい. 最小何手必要か?

制約

  •  2 \leq H,W \leq 100
  •  S_1, \dots, S_H {\tt -}, {\tt o} からなる長さ  W の文字列
  •  S_i[j]={\tt o} となる  (i,j) はちょうど  2 個である.

解法

2つのコマがマス  (a,b), (c,d) にあるとき, 答えは  \left|a-c \right|+\left| b-d \right| である. よって, 与えられた文字列からコマがある2つのマスを特定できればよい. 実際, これは  {\tt for}, {\tt if} を活用することにより実現可能である.