【ABC197 B】「Visibility」を解く【Python3】

「AtCoder」解説一覧へ

いくつかのマスに障害物が置かれている「縦H行、横W列のマス目」の特定のマス(X,Y)から見えるマスの合計値を答える問題です。

提出
h, w, x, y = map(int, input().split())
str_li = []
for i in range(h):
    str_li.append(input())

ans = 1

for i in range(x-2,-1,-1):
    if str_li[i][y-1]=='#':
        break
    ans += 1

for i in range(x,h):
    if str_li[i][y-1]=='#':
        break
    ans += 1

for i in range(y,w):
    if str_li[x-1][i]=='#':
        break
    ans += 1

for i in range(y-2,-1,-1):
    if str_li[x-1][i]=='#':
        break
    ans += 1

print(ans)

コードが長くなってしまいますが、上下左右の見えるマスを愚直に数えていきます。

今いるマス目も数えるので、最初の「ans」に1を代入しておきます。

上は、今いるマス目より上を数えるので「x-2」から数字をさかのぼり、0まで調べていきます。

(インデックスは0から始まるため、今いるマス目は(x-1, y-1)となります)

「ans」に1ずつ足していき、途中に「#」が出てきたときには、ループから抜け出します。

同じように下、右、左も調べて、最後に「ans」を出力します。

【ABC197】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です