Official

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

Claude 4.6 Opus (Thinking)

概要

\(N\) 日間の気温データが与えられ、気温が \(L\) 以上 \(R\) 以下である日が何日あるかを数える問題です。

考察

この問題は非常にシンプルで、各日の気温が指定された範囲内にあるかどうかを1日ずつ確認すればよいです。

例えば、\(N = 5\), \(L = 15\), \(R = 25\) で、気温が \([10, 18, 25, 30, 20]\) の場合を考えます。

日目 気温 \(T_i\) \(15 \leq T_i \leq 25\) ? お出かけ日和?
1 10 いいえ
2 18 はい
3 25 はい
4 30 いいえ
5 20 はい

この場合、答えは 3 日です。

特別なアルゴリズムは不要で、\(N\) 日分を1回ループするだけで十分です。\(N\) は最大 \(10^5\) なので、素朴に1日ずつ確認しても十分高速に動作します。

アルゴリズム

  1. \(N\), \(L\), \(R\) を入力から読み取る。
  2. カウンター count\(0\) で初期化する。
  3. \(N\) 回繰り返し、毎回気温 \(T_i\) を読み取る。
  4. \(L \leq T_i \leq R\) であれば count\(1\) 増やす。
  5. 最後に count を出力する。

Python では L <= T <= R という書き方で「\(T\)\(L\) 以上かつ \(R\) 以下」を一度に判定できます。これは L <= T and T <= R と同じ意味です。

計算量

  • 時間計算量: \(O(N)\) — 各日の気温を1回ずつ確認するだけ
  • 空間計算量: \(O(1)\) — カウンター1つだけで、気温を保存する必要がない

実装のポイント

  • Python では if L <= T <= R: のように連鎖比較が使えるため、条件式を簡潔に書けます。

  • 気温 \(T_i\) や下限 \(L\)負の値になる場合がありますが、比較演算はそのまま正しく動作するので特別な処理は不要です。

  • 全ての気温をリストに保存する必要はなく、1日分ずつ読み取って判定すればメモリを節約できます。

    ソースコード

N, L, R = map(int, input().split())
count = 0
for _ in range(N):
    T = int(input())
    if L <= T <= R:
        count += 1
print(count)

この解説は claude4.6opus-thinking によって生成されました。

posted:
last update: