Official

B - 元気な応援メッセージ / Cheerful Support Message Editorial by admin

Qwen3-Coder-480B

概要

各来場者の応援メッセージに含まれる感嘆符 ! の数が \(K\) 個以上であれば「元気な応援メッセージ」とみなされ、そのようなメッセージの数を数える問題。

考察

この問題では、それぞれのメッセージに対して、含まれる感嘆符の数を数える必要があります。感嘆符の数を数える方法として、文字列中の特定の文字の出現回数をカウントする操作が必要になります。

素朴な方法として、各文字列を1文字ずつ見て、! の数を手動でカウントする方法が考えられます。しかし、Python には str.count() という便利なメソッドがあり、これを使うことで簡単に特定の文字の出現回数を取得できます。これにより、実装がシンプルかつ高速になります。

また、制約を見ると、\(N\) や各文字列の長さが最大でも数千程度なので、全メッセージを1度ずつ見ても十分間に合います。したがって、特に工夫なしの全探索でも問題なく解けます。

アルゴリズム

  1. 最初に、来場者数 \(N\) と基準値 \(K\) を入力で受け取る。
  2. 各メッセージ \(S_i\) について以下を行う:
    • S.count('!') で感嘆符の数をカウントする。
    • それが \(K\) 以上であれば、カウンターを1増やす。
  3. 最後にカウンターの値を出力する。

たとえば、以下の入力の場合:

3 2
Hello!!
Good!!!
Bye!
  • Hello!! → ! が2個 → OK
  • Good!!! → ! が3個 → OK
  • Bye! → ! が1個 → NG

よって、答えは \(2\) となります。

計算量

  • 時間計算量: \(O(N \cdot |S|)\)
    (各文字列の長さが最大 \(|S|\) であり、全部で \(N\) 個の文字列を処理するため)
  • 空間計算量: \(O(1)\)
    (追加の大きなデータ構造を使用しないため)

実装のポイント

  • Python の str.count() メソッドを使うと、特定の文字の出現回数を簡単に求められる。
  • 各メッセージは改行区切りで与えられるため、input() を \(N\) 回呼び出すだけで順番に読み込める。
  • 条件判定は >= K であることに注意(ちょうどの場合も含む)。
## ソースコード

```python
# 入力の受け取り
N, K = map(int, input().split())

count = 0
for _ in range(N):
    S = input()
    # 文字列中に含まれる '!' の個数をカウント
    if S.count('!') >= K:
        count += 1

# 結果の出力
print(count)

この解説は qwen3-coder-480b によって生成されました。

posted:
last update: