問題
与えられた数値の幅から、与えられた幅の小さい値、大きい値を昇順で出力せよ、という問題
3~8の数値幅で、2と与えられたら、3,4,7,8と出力する
atcoder.jp
TLE
まずは最初、重複を省いたlistを作って、それぞれ小さい側の幅、大きい側の幅でLoopさせてprintすればよいや、と思ったのですが
テストケース1でTLE、メモリがすごいつかわれてますと。109のlistだと256MB以上のメモリを使うようです
qiita.com
ということで、なるほど何か考察が必要な問題ということになります
とりあえず例題1-2をplotしてみる
こう見てみると、数値の幅(B-A+1) <= 大小のprintするべき幅(2*K)の場合、全部出力でいいんでは?と閃けばいいんですけど...
例題1: 8-3+1 : 2*2
→ 6 > 4
例題2: 8-4+1 : 3*2
→ 5 < 6
そうすれば、こちらの通りでいけます。
sample
a, b, k = map(int, input().split()) if b-a+1 <= k*2: for i in range(a, b+1): print(i) else: for i in range(a, a+k): print(i) for i in range(b-k+1, b+1): print(i)