세용용용용 2023. 5. 30. 17:55

나의 코드

def solution(order):
    answer = 0
    truck = []
    second_list = []

    #주문 길이 +1만큼 박스를 뽑아냄
    # +1 해주는 이유는 마지막 박스가 주문 박스인경우
    #트럭에 append시키고 반복문이 끝나버림...ㅠㅠ
    #그러므로 다음 박스를 뽑고 second리스트의 박스를 확인할수 있게
    for box in range(1,len(order)+2):
        #뽑은 박스가 주문박스인경우 트럭에 실음
        if box == order[0]:
            truck.append(order.pop(0))
        #뽑은 박스가 주문박스가 아닌경우
        else:
            if order[0] < box and second_list[-1] != order[0]:
                break
            #second의 가장 최근 박스와 주문박스가 같으면
            #계속 truck에 실음        
            else:
                while second_list:
                    if second_list[-1] == order[0]:
                        truck.append(order.pop(0))
                        second_list.pop(-1)
                    else:
                        break
                second_list.append(box)
    #print(truck)
    answer = len(truck)
    return answer
solution([5, 4, 3, 2, 1])

역시.... 너무 어렵다 ㅠㅠㅠㅠ

 

최종코드

접근 : 일단 보조벨트에 물건을 올리고 주문번호와 같으면 뽑아내고 아니면 계속 쌓는 방식

def solution(order):
    answer = 0
    second = []
    box = 1
    while box <= len(order):
        second.append(box)
        while second and second[-1] == order[answer]:
            answer+=1
            second.pop(-1)
           
        box+=1
    print(answer)
    return answer
solution([4, 3, 1, 2, 5])

너무너무너무너무 허무하다.,.,.,.,.