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\) 回)なら十分高速です。
逆に、不要に複雑な処理(ソートなど)をすると実装が重くなるだけで利点がありません。
アルゴリズム
- 入力から \(N, L, R\) と \(N\) 個の気温を受け取る
- 気温配列を先頭から順に見て、各 \(t\) について \(L \le t \le R\) を判定
- 真ならカウントを増やす
- 最後にカウントを出力する
提示コードでは次の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: