LV 2: 택배상자

ewillwin·2023년 8월 23일
0

문제 링크

LV 2: 택배상자


구현 방식

  • 무지성 조건문 분기로 풀었다

  • 일단 order의 길이가 1,000,000 이하이기 때문에 1중 for문으로 구현해주어야 한다

    • o_idx는 order의 상자 번호를 가리키고, order를 순회하는 for문을 기준으로 잡았다
  • belt를 [1, 2, 3, 4, 5 ...]이런 식으로 정의해주고 b_idx로 현재 내릴 수 있는 상자의 번호를 가리킬 수 있도록 해주었다

  • a_belt는 보조 컨테이너 벨트로, stack 형식으로 구현해주었다


코드

def solution(order):
    N = len(order)
    
    belt = [i for i in range(1, N+1)]
    a_belt = [] #보조 컨테이너 벨트
    
    b_idx = 0; count = 0
    for o_idx in range(N):
        if b_idx < N and order[o_idx] == belt[b_idx]: 
            b_idx += 1
            count += 1
        else:
            if a_belt and a_belt[-1] == order[o_idx]: #a_belt의 tail이 마침 일치하는 경우
                count += 1
                a_belt.pop()
            
            elif b_idx < N: #보조 컨테이너 벨트에 옮길 수 있는 경우
                while True:
                    a_belt.append(belt[b_idx])
                    b_idx += 1
                    if b_idx >= N:
                        break
                    if order[o_idx] == belt[b_idx]: #보조 컨테이너 벨트에 옮기다가 트럭에 실을 수 있는 경우 발견
                        b_idx += 1
                        count += 1
                        break
            else: #더이상 트럭에 실을 수 없는 경우
                break
                    
    return count
profile
💼 Software Engineer @ LG Electronics | 🎓 SungKyunKwan Univ. CSE

0개의 댓글