【AtCoder】ABC280解説(Python)

デンソークリエイトプログラミングコンテスト2022 Winter(AtCoder Beginner Contest 280)の解説記事です。

目次

ABC280 A – Pawn on a Grid

問題

問題文の要約は以下の通りです。

問題の要約

\(W\) 文字の文字列が \(H\) 個与えられたとき、各文字列に現れる # の数の合計を求めよ。

入力

\(H\) \(W\)
\(S_1\)
\(S_2\)
\(\vdots\)
\(S_H\)

出力

各文字列に現れる # の数の合計を整数で出力せよ。

解法1

if 文で各文字が#であるか判定する

解説

各文字列をfor文で順番に確認して、if 文で各文字が#であるか判定します。

解答

H,W = map(int, input().split())

# 各文字列に現れる # の数の合計、初期値 0
Ans=0
# H個の文字列を順に確認
for i in range(H):
    S=input()
    # W文字の各文字が # であるか確認
    for j in range(W):
        if S[j]=='#':
            Ans += 1
    
print(Ans)

解法2

文字列ごとに#の数を数える。

解説

文字列ごとに.count('#')#の数を数えます。

解答

H, W = map(int, input().split())
Ans=0
for i in range(H):
    Ans += input().count('#')
print(Ans)

解法3

各文字をリストに追加して一度に#の数を数える。

解説

文字列をextendでリストに追加すると1文字づつ追加されます。そして#の数を一度に数えます。

解答

H, W = map(int, input().split())
S = []
for i in range(H):
    S.extend(input())
print((S).count('#'))

参考

3 5
#....
.....
.##..

のときextendで追加した、Sは次のようになります。

['#', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '#', '#', '.', '.']
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次