https://school.programmers.co.kr/learn/courses/30/lessons/161989
def solution(n, m, section):
answer = 0
_list= [1 for _ in range(n)]
for i in section:
_list[i-1] = 0
while True:
if 0 not in _list:
break
idx=_list.index(0)
_list[idx:idx+m] = [1] * m
answer +=1
return answer
(시간초과 오류는 항상 답답해요.. 이래서 효율성 어느정도 계산할 줄 알아야 하나바요... )
위의 코드에서 시간초과 난것은 제한사항을 보면 대략 가늠이 된다. n이 10만이고 section도 10이다. m이 1이면 _list를 10만번 재설정한다는 것이다. 이러한 재설정 방법을 사용하지 않고 코드를 짤 필요가 있다.
def solution(n, m, section):
answer = 0
start = -100001
for s in section:
if s>=start+m:
start = s
answer += 1
return answer