No.1673 Lamps on a line
まずは二つのコードを
AC
N,Q = map(int,input().split()) switch = [0]*(N) ans = 0 for i in range(Q): L,R = map(int,input().split()) for j in range(L-1,R): if switch[j] == 0: switch[j] = 1 ans += 1 else: switch[j] = 0 ans -= 1 print(ans)
TLE
N,Q = map(int,input().split()) switch = [0]*(N) for i in range(Q): L,R = map(int,input().split()) for j in range(L-1,R): if switch[j] == 0: switch[j] = 1 else: switch[j] = 0 print(switch.count(1))
二つのコードは、1の個数の数え方だけ異なる
変数をインクリメントするか、count()メソッドで数えるか
覚えたてのメソッドってなぜか使いたくなっちゃいますもんね
僕だけかもしれないけど
ただし今回はNの数が増えるにつれて、count()メソッドがネックになっています
count()は中身をすべて確認し、該当する要素数を出力してくれるので、
Nが大きくなればなるほど、計算量が増えます
なので今回は、0を1にするタイミングで変数にインクリメントして実装
※ count()メソッドは文字列にも使うことができるので、
厳密に言うと要素数を出力という説明は不自然かもしれませんが、
わかりやすく説明するために、そのような表現を使わせていただきました