💨

atcoder-ABC253[B問題]

2022/06/05に公開

初めに

本記事では、atcoder-ABC253のB問題を解説します!
https://atcoder.jp/contests/abc253/tasks/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)
GitHubで編集を提案

Discussion