LoginSignup
2
0

More than 1 year has passed since last update.

アルゴリズム実技検定(PAST) 第11回 F問題 Python解答例

Last updated at Posted at 2022-12-27

Supership VPoEの名畑です。
趣味で競プロやっています。

アルゴリズム実技検定(PAST)の過去問題解答例シリーズです。アルゴリズム実技検定(PAST) 第11回 E問題 Python解答例(二分探索)の続きです。

今回は第11回のF問題の私の解答例(Python3)を公開します。

ちなみにA問題からF問題までの合計点が46点なので、ここまで来れば初級(45点)ですね。
高橋様のつぶやき(2019年時点)によるとAtCoderでは茶色相当ってことになります。

そもそもアルゴリズム実技検定ってなんですか? という方はアルゴリズム実技検定(PAST)について 並びに 第11回A〜C問題 Python解答例をご覧いただけますと幸いです。

第11回の過去問題全部

第11回 F問題 シューティングゲーム(7点)

問題

言語

  • Python (3.8.2)

解答例

H, W = map(int, input().split())
s = [list(map(int, input().split())) for _ in range(H)]
N = int(input())

for i in range(N):
    # rとcの入力。sが0始まりなので1減らしている。
    r, c = map(int, input().split())
    r -= 1
    c -= 1

    # ブロックマスなら上位(行番号が小さい)マスを一つずつ下ろす
    if s[r][c] > 0:
        for j in range(r - 1, -1, -1):
            s[j + 1][c] = s[j][c]
        s[0][c] = 0  # 最上位を空マスにする

# 結果出力
for i in range(H):
    print(*s[i])

最初は空中ブロックがないという条件なので、撃たれたマスの上位を一つずつ順番に見れば網羅できる。

jのループは途中で空マスが見つかればそこで抜けても良いのですが、Hが100以下とかなり小さいので処理継続させています。

最後に宣伝

SupershipのQiita Organizationを合わせてご覧いただけますと嬉しいです。他のメンバーの記事も多数あります。

Supershipではプロダクト開発やサービス開発に関わる方を絶賛募集しております。
興味がある方はSupership株式会社 採用サイトよりご確認ください。

是非ともよろしくお願いいたします。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0