いくつかのマスに障害物が置かれている「縦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」を出力します。