デンソークリエイトプログラミングコンテスト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は次のようになります。
['#', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '#', '#', '.', '.']