ericagong / algorithm_solving

2 stars 0 forks source link

[그리디] 택배배달과 수거하기 #86

Open ericagong opened 1 year ago

ericagong commented 1 year ago

⭐ 성찰

  1. 최소거리 키워드가 나오면 그리디 / 최단거리 알고리즘 을 떠올리기
  2. 굳이 Array.prototype.pop(), Array.prototype.shift() 등의 연산이 필요치 않고 포인터로만 처리할 수 있는지 고민해보기!

❓ 문제 상황

택배배달과 수거하기

👨‍💻 문제 해결

✅ 1차 풀이: 스택을 이용한 그리디

function move_truck(arr, cap) { let space = cap; while (arr.length > 0) { const curr = arr.pop(); if (curr <= space) { space -= curr; } else { arr.push(curr - space); space = 0; break; } } }

function solution(cap, n, deliveries, pickups) { remove_zeros(deliveries); remove_zeros(pickups);

let distance = 0; while (deliveries.length > 0 || pickups.length > 0) { const d = Math.max(deliveries.length, pickups.length); distance += 2 * d;

move_truck(deliveries, cap);
move_truck(pickups, cap);

}

return distance; }



### ✅ 2차 풀이: 포인터