반응형
코테 문제 풀이
간단한 문제 설명
메인 컨테이너 벨트를 타고 상자들이 순서대로 전달됩니다. 이 상자들을 서브 컨테이너 벨트를 사용하여 트럭에 전달하는 문제입니다.
메인 컨테이너 벨트를 타고 전달되는 상자들이 있습니다.
상자들은 순서대로 1, 2, 3, 4, 5 이런식으로 전달됩니다 트럭에서 상자를 쌓고 싶은 순서는 다릅니다.
서브 컨테이너 벨트에 stack방식으로 상자를 보관할 수 있으며 상자들은 마지막에 넣은 것을 가져와 트럭에 실을 수 있습니다.

간단한 예시
트럭에 실어야 하는 순서가 EX) 2, 4, 5, 3, 1 이라고 한다면
- 서브 컨테이너에 1, 2 박스를 실습니다.
- 트럭으로 2번 박스를 전달합니다. sub_container = [ 1 ] truck = [ 2 ]
- 서브 컨테이너에 3, 4 박스를 실습니다.
- 트럭으로 4번 박스를 전달합니다. sub_container= [1,3 ] truck = [ 2, 4 ]
- 서브 컨테이너에 5 박스를 싣고 트럭으로 옮깁니다. sub_container= [ 1, 3 ] truck = [ 2, 4, 5 ]
- 모든 박스를 서브 컨테이너로 옮겼기 때문에 서브 컨테이너에서 truck으로 옮겨줍니다.
- truck = [ 2, 4, 5, 3, 1]
의사코드 작성
- 트럭에 올려야 할 박스가 보일때 까지 박스를 서브 컨테이너로 전달한다.
- 트럭에 올려야 할 박스를 서브 컨테이너에서 찾았다면 트럭으로 옮긴다.
- 이것을 모든 박스를 서브 컨테이너에 옮길때 까지 반복한다.
- 서브 컨테이너에 남겨진 박스를 트럭에 옮긴다.
코드로 작성하기
from collections import deque
def solution(order):
answer = 1
order = deque(order)
stack = []
result = []
size = len(order)
for i in range(1, size + 1):
stack.append(i) #박스를 서브 컨테이너에 옮긴다
while stack:
if order and stack[-1] == order[0]: #서브 컨테이너에서 트럭으로 옮긴다
num = stack.pop()
order.popleft()
result.append(num)
else: #만약 트럭으로 옮기는 순서가 잘못 됐다면 중지한다.
break
return len(result) #트럭에 실은 박스 갯수를 반환한다.
반응형
'코딩테스트' 카테고리의 다른 글
[Python] 백준 1430 공격 (0) | 2023.09.16 |
---|---|
[Python] 프로그래머스 프렌즈 4블록 (1) | 2023.05.15 |
[Python] 프로그래머스 길 찾기 게임 Tree 자료형으로 풀기 (1) | 2023.05.13 |
[Python] 프로그래머스 양궁대회 (0) | 2023.05.10 |
[Python] 프로그래머스 후보키 (0) | 2023.05.07 |