問題
C – 菱型カウント
回答
30点回答をスライドに従って求めます。
AtCoder Beginner Contest 018 解説 from AtCoder Inc.
R, C, K = map(int, input().split())
S = [input() for _ in range(R)]
# 黒マスの座標を保存
black_squares = []
for r in range(R):
for c in range(C):
if S[r][c] == 'x':
black_squares.append((r, c))
ans = 0
# 中心 (r, c) を固定
for r in range(K-1, R-K+1):
for c in range(K-1, C-K+1):
# 中心からマンハッタン距離がK未満の範囲で黒マスがある場合は不適。
# 黒マスがない場合は答えに1加算。
for r_black, c_black in black_squares:
if abs(r_black - r) + abs(c_black - c) <= K -1:
break
else:
ans += 1
print(ans)