반응형
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/131704#
2. 코드
function solution(order) {
let answer = 0;
let main = order.reverse(); // pop이 shift 보다 시간 덜 소요 되므로 주문 역순
let left = order.map((el,idx) => idx+1).reverse(); // 컨테이너 벨트 역순
let sub = []; // 보조 컨테이너(stack)
while(true){
// 택배를 모조리 보조 컨테이너 옮긴 후 보조 컨테이너에 택배가 없을 때 break
if(!left.length && !sub.length) break;
if(left.length && main[main.length-1] === left[left.length-1]){
answer++;
left.pop();
order.pop();
}
else if(sub[sub.length-1] === main[main.length-1]){
sub.pop();
answer++;
order.pop();
}else{
// 보조 컨테이너에 옮기거나 트럭에 넣을 남은 택배도 없고,
// 다음 순서 택배가 보조 컨테이너에서 꺼낼 수 있는 택배와 다른 경우
// 더 이상 진행할 수 없으므로 break
if(!left.length && main[main.length-1] !== sub[sub.length-1]) break;
else{
sub.push(left[left.length-1]); //메인 컨테이너에 택배 있다면 보조컨테이너에 옮기기
left.pop();
}
}
}
return answer;
}
복기
6/19
반응형
'프로그래머스 > 스택, 큐' 카테고리의 다른 글
[스택] 프로그래머스 '같은 숫자는 싫어' - js (0) | 2023.03.31 |
---|---|
[큐] 프로그래머스 '캐시' - js (0) | 2023.03.29 |
[스택] 프로그래머스 '짝지어 제거하기' - js (0) | 2023.03.17 |
[스택] 프로그래머스 '다리를 지나는 트럭' - js (0) | 2022.11.17 |
[큐] 프로그래머스 '프린터' - js (0) | 2022.11.16 |