問題リンク
書いたコード
h, w = map(int, input().split())
lines = [input() for _ in range(h)]
# 横の判定
def yoko(i, j, w):
if j == 0 and lines[i][j + 1] == "#":
return True
elif j == w - 1 and lines[i][j - 1] == "#":
return True
elif lines[i][j - 1] == "#":
if lines[i][j + 1] == "#":
return True
return False
# 縦の判定
def tate(i, j, h):
if i == 0:
if lines[1][j] == "#":
return True
elif i == h - 1:
if lines[i - 1][j] == "#":
return True
else:
if lines[i - 1][j] == "#" and lines[i + 1][j] == "#":
return True
return False
for y in range(h):
for x in range(w):
if yoko(y, x, w) and tate(y, x, h):
print(y, x)
解説
レベルアップ問題集のやつなので、それまでに解いた
・横だけの判定
・縦だけの判定
のコードを使って、boolをリターンするように書き換えたら通った。
反省
べた書きコードが大量になる場合は関数を使った方が早く見やすくなる。
0 件のコメント:
コメントを投稿