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 日ずつ読んで判定するのが最もシンプルです。
アルゴリズム
- \(N, L, R\) を入力する
- カウント用の変数
countを \(0\) で初期化する - \(N\) 日分の気温を順に読む
- 各気温 \(t\) について、\(L \leq t \leq R\) なら
countを \(1\) 増やす - 最後に
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: