マップの判定・縦横 (paizaランク B 相当)

create 2021/08/12

Paiza Python 勉強メモ

t f B! P L

問題リンク

マップの判定・縦横 (paizaランク B 相当)

書いたコード

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をリターンするように書き換えたら通った。

反省

べた書きコードが大量になる場合は関数を使った方が早く見やすくなる。

このブログを検索

自己紹介

自分の写真
ずっとなにものかになりたくてもがいている一応ワーママです。 プログラミング記事は独学による個人的な勉強メモのため、誤った内容が含まれることもあるかもしれません。
何かお気づきの際は、問い合わせフォームや、コメント欄からご指摘いただけましたら、大変助かります。

参加中ランキング

PVアクセスランキング にほんブログ村

ブログ アーカイブ

QooQ