# 처음 짠 코드
def solution(ingredient):
answer = 0
index = 0
while index <= len(ingredient)-4:
if ingredient[index]==1 and ingredient[index+1]==2 and \
ingredient[index+2]==3 and ingredient[index+3]==1:
answer += 1
# 4개의 값 지워줌
ingredient.pop(index)
ingredient.pop(index)
ingredient.pop(index)
ingredient.pop(index)
# 인덱스 초기화 (다시 처음부터)
index = 0
continue
index += 1
return answer
코드가 깔끔하지는 않지만 될 거라고는 생각했다... 하지만 결과는 시간 초과!!
문제는 인덱스를 0으로 초기화해서 다시 계산하다보니 시간이 너무 오래 걸리는 것이었다. 따라서 인덱스를 최소한의 전 인덱스로만 돌려 놓으면 런타임 에러가 해결된다.
# 빵, 야채가 준비되어 있을 수 있으니까 2개 전으로
# 고기까지 준비되어 있다면 이미 이전에 빵, 야채, 고기, 빵 조합이 완성
index -= 2
# 정답 코드
def solution(ingredient):
answer = 0
index = 0
while index <= len(ingredient)-4:
if ingredient[index]==1 and ingredient[index+1]==2 and \
ingredient[index+2]==3 and ingredient[index+3]==1:
answer += 1
# 4개의 값 지워줌
for i in range(4):
ingredient.pop(index)
# 빵 야채 가 준비되어 있을 수 있으니까 2개 전으로
if index > 2:
index -= 2
else:
index = 0
continue
index += 1
return answer
다른 사람들이 제출한 코드를 보니 훨씬 깔끔하고 정리가 잘 되어있는 것을 보았다. 아직 한 번에 함수로 정의해 문제를 해결하기는 쉽지 않겠지만 노력해 보는 걸로!!
댓글