pandasでpaiza問題(陣取りゲーム:陣取りの手間)

スポンサーリンク

paizaへのリンク(陣取りゲーム:陣取りの手間 (paizaランク B 相当)

以前に自分が書いたコードは一応満点が取れるものだったが、模範解答を参考に少しきれいなコードに書き直した。回数はnで管理している。

import pandas as pd

h, w = map(int, input().split())
lst1 = []

for i in range(h):
    lst1.append(list(input()))

queue1 = []
for i in range(h):
    if '*' in lst1[i]:
        for j in range(w):
            if lst1[i][j] == '*':
                lst1[i][j] = 0
                queue1.append([i, j, 1])

df1 = pd.DataFrame(lst1)

while True:
    [y, x, n] = queue1[0]
    queue1.pop(0)

    if y > 0 and df1.iat[y - 1, x] == '.':
        df1.iat[y - 1, x] = n
        queue1.append([y - 1, x, n + 1])
    if y < h - 1 and df1.iat[y + 1, x] == '.':
        df1.iat[y + 1, x] = n
        queue1.append([y + 1, x, n + 1])
    if x > 0 and df1.iat[y, x - 1] == '.':
        df1.iat[y, x - 1] = n
        queue1.append([y, x - 1, n + 1])
    if x < w - 1 and df1.iat[y, x + 1] == '.':
        df1.iat[y, x + 1] = n
        queue1.append([y, x + 1, n + 1])

    if len(queue1) < 1:
        break

for i in range(h):
    for j in range(w):
        print(df1.iat[i, j], end='')
    print()

「pandasでpaiza問題」記事一覧へのリンク

コメント

当ブログのコンテンツが気に入ったら広告ブロックの解除(ホワイトリスト化)をご検討下さい。

Please disable your adblocker or whitelist this site!

タイトルとURLをコピーしました