Official

A - 快適な気温 / Comfortable Temperature Editorial by admin

GPT 5.4 High

概要

各日の予想気温 \(T_i\) について、\(L \leq T_i \leq R\) を満たす日を数えるだけの問題です。
\(N\) 日を順番に見て、条件に当てはまる日数をカウントすれば答えが求まります。

考察

この問題で知りたいのは、

  • その日の気温が下限 \(L\) 以上
  • その日の気温が上限 \(R\) 以下

の両方を満たす日が何日あるか、ということです。

つまり各日について「お出かけ日和かどうか」を 1 回ずつ判定すれば十分です。

例えば、

  • \(L = 20\)
  • \(R = 25\)
  • 気温が \(18, 20, 23, 27\)

だった場合、

  • \(18\) → 範囲外
  • \(20\) → 範囲内
  • \(23\) → 範囲内
  • \(27\) → 範囲外

となるので、答えは \(2\) 日です。

重要な気づき

各日の判定は他の日と独立しています。
そのため、難しい処理は不要で、入力を読みながら

  • 条件を満たすならカウントを \(1\) 増やす
  • そうでなければ何もしない

を繰り返せばよいです。

素朴なアプローチで十分な理由

この問題では \(N \leq 10^5\) なので、全ての日を 1 回ずつ見る \(O(N)\) の方法で十分高速です。

逆に、

  • 気温を並べ替える
  • 一度配列に全部保存してから複雑な処理をする

といったことは必要ありません。
ただ数を数えるだけなので、1 日ずつ読んで判定するのが最もシンプルです。

アルゴリズム

  1. \(N, L, R\) を入力する
  2. カウント用の変数 count\(0\) で初期化する
  3. \(N\) 日分の気温を順に読む
  4. 各気温 \(t\) について、\(L \leq t \leq R\) なら count\(1\) 増やす
  5. 最後に count を出力する

Python では範囲判定を

if L <= t <= R:

と書けるので、分かりやすく実装できます。

計算量

  • 時間計算量: \(O(N)\)
  • 空間計算量: \(O(1)\)

実装のポイント

  • 範囲は「以上・以下」なので、端の値も含みます。
    つまり \(t = L\)\(t = R\) の日も数える必要があります。

  • 入力を受け取りながらその場で判定しているため、気温を配列に保存する必要はありません。

  • 提出コードでは sys.stdin.readline を使って入力を高速にしています。

    ソースコード

import sys

def main():
    input = sys.stdin.readline
    N, L, R = map(int, input().split())
    count = 0
    for _ in range(N):
        t = int(input())
        if L <= t <= R:
            count += 1
    print(count)

if __name__ == "__main__":
    main()

この解説は gpt-5.4-high によって生成されました。

posted:
last update: