Official

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

gpt-5.3-codex

概要

各日の気温 \(T_i\) が、快適とみなす範囲 \([L, R]\) に入っているかを順番に判定し、条件を満たす日数を数える問題です。
全日を1回ずつ確認するだけで解けます。

考察

重要な観察はとてもシンプルです。

  • ある日がお出かけ日和かどうかは、その日の気温 \(T_i\) だけで決まる
  • 日同士の関係はないので、各日を独立に判定して合計すればよい

つまり、各 \(i\) について
\(L \leq T_i \leq R\)
を満たすかを調べ、満たすならカウントを \(1\) 増やします。

具体例

例えば \(L=15, R=25\)、気温が
\([10, 15, 20, 30]\)
なら、範囲内は \(15, 20\) の2日なので答えは2です。

素朴なアプローチとの比較

この問題では「全探索(全日チェック)」がそのまま最適です。
\(N \le 10^5\) なので、1日1回の判定(合計 \(N\) 回)なら十分高速です。
逆に、不要に複雑な処理(ソートなど)をすると実装が重くなるだけで利点がありません。

アルゴリズム

  1. 入力から \(N, L, R\)\(N\) 個の気温を受け取る
  2. 気温配列を先頭から順に見て、各 \(t\) について \(L \le t \le R\) を判定
  3. 真ならカウントを増やす
  4. 最後にカウントを出力する

提示コードでは次の1行で2,3を行っています。

  • sum(1 for t in temps if l <= t <= r)

これは「条件を満たす要素1つにつき1を足し合わせる」書き方です。

計算量

  • 時間計算量: \(O(N)\)
  • 空間計算量: \(O(N)\)(実装では入力気温を temps に保持しているため)

実装のポイント

  • Pythonでは l <= t <= r と連鎖比較で書けて読みやすいです。

  • 入力が多めでも、sys.stdin.buffer.read() を使うと高速に読み込めます。

  • この問題は1パスで完了するため、ロジックは「判定して数える」だけに絞るとミスが減ります。

    ソースコード

import sys

def main():
    data = list(map(int, sys.stdin.buffer.read().split()))
    n, l, r = data[0], data[1], data[2]
    temps = data[3:3 + n]

    count = sum(1 for t in temps if l <= t <= r)
    print(count)

if __name__ == "__main__":
    main()

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

posted:
last update: