코딩테스트 일기장
[프로그래머스 코딩테스트 연습] 택배상자 문제 javascript (정답포함)
yong_zz
2022. 11. 9. 19:11
코딩테스트 1레벨을 전부 다 푼 뒤에 2레벨 문제를 풀려고 했으나..
1레벨을 풀다보니 이정도는 나에게 너무 쉽다는 자만감?이 생겨서.. 2레벨을 도전해보았다
2레벨중에서 난이도가 낮을 것 같은 문제명을 찾아 택배상자 라는 녀석을 고르게 되었다
문제 내용을 보면 간단하다..
컨베이너 벨트 arr, 보조 컨베이너 벨트 arr을 만들어서 order 변수 순서에 맞춰서 넣어주면 되는거였다.
읭?? 나는 이문제를 보고 좀 의문이 들었다.. 개인적으로.. 이전에 리뷰한 Lv1에 해당하는 햄버거 문제가 더 어렵다고 체감이 되었으니...
그건 그거고.. 풀이를 해보았는데 생각보다 빠르게 풀었다.
완성본
function solution(order) {
var answer = 0;
let order_length = order.length;
let arr = [];
let temp = [];
for(let i=1; i<=order_length; i++){
arr.push(i);
}
let arr_i = 0;
let order_i = 0;
while(true){
let temp_length = temp.length-1;
if(order_length === order_i){
break;
}
if(arr_i >= order_length){ // 컨베이너 벨트에서 모든 택배상자가 지나간 경우 보조컨베이너 벨트에서 체크
if(temp_length > -1 && temp[temp_length] === order[order_i]){
temp.pop();
answer ++;
order_i++;
}else{
break;
}
continue;
}
if(arr[arr_i] == order[order_i]){ // 컨베이너 벨트에서 택배차로 이동
answer ++;
order_i++;
}else if(temp_length > -1 && temp[temp_length] === order[order_i]){ // 보조 컨베이너 벨트에서 택배차로 이동
temp.pop();
answer ++;
order_i++;
continue;
}else if(arr[arr_i]){ // 컨베이너 벨트에서 보조 컨베이너 벨트로 이동
temp.push(arr[arr_i]);
}
arr_i++;
}
return answer;
}
그냥.. 처음 생각 그대로 arr 두개 만들어서 작업을 했더니 한번에 테스트케이스들을 전부 통과 하였다.
몇몇 테스트 케이스가 시간이 꽤 오래 걸리고 메모리사용률이 높았지만 한번에 풀었다는 기분이 너무 좋았다.
풀이한 코드가 요상하긴 하지만.. 풀었다는 거에 의미를 두자 ㅎㅎ ^^;
(많이 풀다보면 잘 하겠지 뭐~~)