マップの判定・縦横 (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をリターンするように書き換えたら通った。

反省

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

このブログを検索

自己紹介

自分の写真
Pythonが趣味です。 勉強のアウトプットを公開したくて、新たにブログ開設しました。 勉強メモのつもりだけど、日常の雑記も書きたい予定。

独学中の身で、個人的な勉強メモも投稿しているので、間違った内容が含まれることもあるかもしれません。
お気づきの際は、問い合わせフォームや、コメント欄からご指摘いただけましたら、大変助かります。

旧ブログ(更新停止中。いずれ統合するかも)ゆーるるのゆるゆる日記

参加中ランキング

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

ブログ アーカイブ

QooQ