본문 바로가기
코딩테스트 준비/프로그래머스

[프로그래머스] Lv 1. 햄버거 만들기

by rahites 2023. 1. 27.

# 처음 짠 코드

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

 

다른 사람들이 제출한 코드를 보니 훨씬 깔끔하고 정리가 잘 되어있는 것을 보았다. 아직 한 번에 함수로 정의해 문제를 해결하기는 쉽지 않겠지만 노력해 보는 걸로!!

댓글