문제
https://school.programmers.co.kr/learn/courses/30/lessons/131704
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
입출력

해설
1 ~ N까지 순서대로 컨테이너가 오고 있다.
하지만 order의 순서대로 택배를 실어야 한다.
그렇기에 보조 컨테이너 벨트를 사용하는데 해당 컨테이너는 stack 구조를 이루고 있다. (FILO)
컨테이너에 물건을 차에 싣는 순서는 다음과 같다.
1. 컨테이너에서 나오는 물건을 order순서에 맞으면 싣는다.
2. 1번 사항이 맞지 않는다면 보조 컨테이너에 물건이 있는지 확인한다.
3. 2번 사항이 맞지 않는다면 보조 컨테이너에 물건을 넣는다.
4. 위 모든 상황이 다 맞지 않는다면 물건을 그만 싣는다.
문제의 스크립트를 정리하면 위와 같다.
하지만 정말 저대로 코딩을 진행하면 틀리는 경우가 있다.
문제의 예시 2번을 보면 계속 order 순서에 맞지 않다가 보조컨테이너에서 계속 꺼내서
물건을 싣는 경우가 있기 때문이다.
고로 필자는 for문을 돌면서 while문을 활용하여 보조 컨테이너에 있는 물건을 싣는 경우를
더이상 보조 컨테이너에서 꺼내지 않을 때까지 반복할 수 있도록 하였다.
정답코드
더보기
'''
'25. 10. 14.(화)
1. 보조 컨테이너 벨트는 stack이다.
로직
1. 1,2,3,4,5 순서대로 1<= x <= len(order)를 보낸다.
2. 현재 번호가 아닐 시 stack에 넣는다.
3. 몇 개가 담기는지 확인
'''
def solution(order):
answer = 0
s = []
idx = 0
for i in range(1, len(order) + 1):
while s and s[-1] == order[idx]:
idx += 1
s.pop()
answer += 1
if order[idx] == i:
answer += 1
idx += 1
else:
s.append(i)
while s and s[-1] == order[idx]:
idx += 1
s.pop()
answer += 1
return answer
깃허브 : https://buly.kr/D3fDD8L
'코딩테스트 > programmers' 카테고리의 다른 글
| 프로그래머스 / DP / 숫자 변환하기 (0) | 2025.10.17 |
|---|---|
| 프로그래머스 / 구현 / 스킬트리 (0) | 2025.10.16 |
| 프로그래머스 / DP / 땅따먹기 (0) | 2025.10.14 |
| 프로그래머스 / 해시 / [3차] 압축 (0) | 2025.10.12 |
| 프로그래머스 / 구현, 정수론 / k진수에서 소수 개수 구하기 (0) | 2025.10.11 |