[プログラマーコードテスト高得点Kit]偽装


質問する


https://programmers.co.kr/learn/courses/30/lessons/42578?language=javascript

に答える

  • は計算しやすく、キー値形式で作成されます.
  • { 
      headgear: 1,
      eyewear: 2,
      ...
    }
  • の場合、服装の数を求め、その服装の種類を加えることができる.calcCombination ex)顔1、顔2、無顔/眼鏡1、眼鏡2、無眼鏡=>3*3
  • 少なくとも1枚の服を着なければならないので、何も着ていません.return result - 1; // 3 * 3 - 1
  • function mapper(clothes) {
        const map = {};
        clothes.forEach(([_, kind]) => {
            if( !map[kind] ) {
                map[kind] = 1;
            } else {
                map[kind]++;
            }
        });
        
        return map;
    }
    
    function calcCombination(map) {
        const categoryCounts = Object.values(map);
        const result = categoryCounts.reduce((acc, cur) => {
            acc = acc * (cur + 1);
            
            return acc;
        }, 1);
        
        return result;
    }
    
    function solution(clothes) {
        const map = mapper(clothes);
        const result = calcCombination(map);
        
        return result - 1;
    }