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日ずつ確認しても十分高速に動作します。
アルゴリズム
- \(N\), \(L\), \(R\) を入力から読み取る。
- カウンター
countを \(0\) で初期化する。 - \(N\) 回繰り返し、毎回気温 \(T_i\) を読み取る。
- \(L \leq T_i \leq R\) であれば
countを \(1\) 増やす。 - 最後に
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: