💨
atcoder-ABC253[B問題]
初めに
本記事では、atcoder-ABC253のB問題を解説します!
入力を受け取る
まずは、入力を受け取ります。行数Hと列数Wは数字で受け取ります。また、長さWの各文字列はまとめてリストに保存します。
H, W = map(int, input().split())
S = [input() for i in range(H)]
print(H, W)
print(S)
・入力
2 3
--o
o--
・出力
2 3
['--o', 'o--']
oの位置をリストに保存する
h番目の文字列のw文字目がoかどうか判定します。もしoだった場合は、リストにh,wを追加します。
A = []
for h in range(H):
for w in range(W):
if S[h][w] == 'o':
A.append([h, w])
print(A)
・入力
2 3
--o
o--
・出力
[[0, 2], [1, 0]]
2つのoが何マス離れているか求める
2つのoの行の差と列の差を求め、足し合わせます。
h1, w1 = A[0]
h2, w2 = A[1]
h_diff = abs(h1 - h2) # 行の差
w_diff = abs(w1 - w2) # 列の差
ans = h_diff + w_diff # 足す
print(ans)
・入力
2 3
--o
o--
・出力
3
まとめ
最終的なコードは以下のようになります。
H, W = map(int, input().split())
S = [input() for i in range(H)]
A = []
for h in range(H):
for w in range(W):
if S[h][w] == 'o':
A.append([h, w])
h1, w1 = A[0]
h2, w2 = A[1]
h_diff = abs(h1 - h2) # 行の差
w_diff = abs(w1 - w2) # 列の差
ans = h_diff + w_diff # 足す
print(ans)
Discussion