본문 바로가기
프로그래머스/Python

[프로그래머스] 택배상자 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 10. 5.
728x90
반응형

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

해당 문제는 컨테이너 벨트를 스택 구조로 하여 해결하면 된다.

상자를 1번부터 하나씩 불러와 우선 컨테이너 벨트에 싣는다.

그리고 컨테이너 벨트가 비거나 꺼낼 수 있는 상자가 현재 실어야 하는 상자가 아닐 때까지 반복하며 상자를 트럭에 싣는다.

 

  1. 컨테이너 벨트를 리스트로 생성한다. belt = []
  2. 현재 실을 상자의 인덱스를 저장할 변수를 생성하고 초기화한다. idx = 0
  3. 상자는 1번부터 전체 실을 상자의 개수만큼 존재하므로 하나씩 불러오며 for box in range(1, len(order) + 1)
  4. 현재 상자를 일단 컨테이너 벨트에 싣는다. belt.append(box)
  5. 컨테이너 벨트 위에 상자가 존재하고 현재 컨테이너 벨트에서 꺼낼 수 있는 상자가 현재 실어야 하는 상자의 순서이면 while (belt) and (belt[-1] == order[idx])
  6. 상자를 트럭에 싣고 실은 개수를 증가시킨다. answer += 1
  7. 상자를 실었으므로 다음으로 실어야 하는 상자로 이동한다. idx += 1
  8. 컨테이너 벨트에서 꺼내 실었으므로 상자를 제거한다. belt.pop()
반응형

3. 소스코드

def solution(order):
    answer = 0
    
    belt = []
    idx = 0
    for box in range(1, len(order) + 1):
        belt.append(box)
        while (belt) and (belt[-1] == order[idx]):
            answer += 1
            idx += 1
            belt.pop()

    return answer
728x90
반응형