Pete, the baker ( 5 kyu )

문제

Pete likes to bake some cakes. He has some recipes and ingredients. Unfortunately he is not good in maths. Can you help him to find out, how many cakes he could bake considering his recipes?

Write a function cakes(), which takes the recipe (object) and the available ingredients (also an object) and returns the maximum number of cakes Pete can bake (integer). For simplicity there are no units for the amounts (e.g. 1 lb of flour or 200 g of sugar are simply 1 or 200). Ingredients that are not present in the objects, can be considered as 0.

Examples:

// must return 2
cakes({flour: 500, sugar: 200, eggs: 1}, {flour: 1200, sugar: 1200, eggs: 5, milk: 200}); 
// must return 0
cakes({apples: 3, flour: 300, sugar: 150, milk: 100, oil: 100}, {sugar: 500, flour: 2000, milk: 2000});

만들 수 있는 완제품의 개수를 리턴하는 문제

풀이

function cakes(recipe, available) {
  let num = [];
  for ( let i in recipe ) {
    if ( available[i] === undefined ) return 0;
    num.push(parseInt(available[i]/recipe[i]))
  }
  num.sort((a,b) => { return a-b });
  return num[0];
}

이용가능한 재료에 레시피 내용이 없으면 0 리턴, 나머지는 재료마다 가능한 개수를 num에 담아 최솟값을 리턴

다른 사람의 풀이

function cakes(recipe, available) {
  return Object.keys(recipe).reduce(function(val, ingredient) {
    return Math.min(Math.floor(available[ingredient] / recipe[ingredient] || 0), val)
  }, Infinity)  
}

똑똑하게 잘푼 풀이.


+ Recent posts