14003번 - 가장 긴 증가하는 부분 수열 5
숏코딩을 하기 위해 코드를 이것저것 손보는 중이었는데 41912217번 제출은 통과하면서 41918500번 제출은 통과가 안되고 시간초과가 뜨더라고요
앞부분은 전부 똑같고, 제일 뒷부분만
41912217번(AC)
while n: if d[n]==m:a+=[l[n-1]];m-=1 n-=1print(*a[::-1])
41918500번(TLE)
while n: if d[n]==m:a=[l[n-1]]+a;m-=1 n-=1print(*a)
이렇게 구성했는데 시간이 상당히 차이가 나는 것 같습니다.
push와 add의 차이일까 싶어 41946039번에서 a+=[l[n-1]]를 a=a+[l[n-1]]로 바꾸어 제출해 보았는데 이 역시 시간초과가 뜹니다.
41946039번(TLE)
while n: if d[n]==m:a=a+[l[n-1]];m-=1 n-=1print(*a[::-1])
이러한 차이가 발생하게 되는 이유가 뭔가요?
+=은 기존의 리스트 객체 자체에 원소를 덧붙이는 역할을 합니다.
= +는 기존의 리스트를 복사하여 새로운 리스트 객체를 만들고, 거기에 원소를 덧붙인 뒤 그 레퍼런스를 대입하는 역할입니다.
댓글을 작성하려면 로그인해야 합니다.
lycoris1600 2년 전
숏코딩을 하기 위해 코드를 이것저것 손보는 중이었는데 41912217번 제출은 통과하면서 41918500번 제출은 통과가 안되고 시간초과가 뜨더라고요
앞부분은 전부 똑같고, 제일 뒷부분만
41912217번(AC)
while n:
if d[n]==m:a+=[l[n-1]];m-=1
n-=1
print(*a[::-1])
41918500번(TLE)
while n:
if d[n]==m:a=[l[n-1]]+a;m-=1
n-=1
print(*a)
이렇게 구성했는데 시간이 상당히 차이가 나는 것 같습니다.
push와 add의 차이일까 싶어 41946039번에서 a+=[l[n-1]]를 a=a+[l[n-1]]로 바꾸어 제출해 보았는데 이 역시 시간초과가 뜹니다.
41946039번(TLE)
while n:
if d[n]==m:a=a+[l[n-1]];m-=1
n-=1
print(*a[::-1])
이러한 차이가 발생하게 되는 이유가 뭔가요?