[리트코드] 1217. Minimum Cost to Move Chips to The Same Position




1217. Minimum Cost to Move Chips to The Same Position

리트코드

나의 풀이

/**
 * @param {number[]} position
 * @return {number}
 */
var minCostToMoveChips = function (position) {
  const hash = position.reduce((acc, cur) => {
    acc[cur] = (acc[cur] || 0) + 1;
    return acc;
  }, {});
  let answer = [];
  Object.keys(hash).forEach((v, i, arr) => {
    answer.push(arr.filter(el => v !== el).reduce((acc, cur) => acc + (Math.abs(+v - cur) % 2) * hash[cur], 0));
  });

  return Math.min(...answer);
};


hash 함수로 변환후, target으로 배열의 모든 요소를 순회하며, 가장 작은 값을 선택하게 하였다.
가장 작은 target을 정하지 못하고, 모두 순회하였기 때문에 효율성이 안좋다.

Runtime: 108 ms, faster than 9.68% of JavaScript online submissions for Minimum Cost to Move Chips to The Same Position.


정말 낮게 나왔다..큐ㅠㅠㅠㅠ😭

효율성 좋은 코드

/**
 * @param {number[]} position
 * @return {number}
 */
var minCostToMoveChips = function(position) {
    let even = 0;
    let odd = 0;
    for (let i = 0; i < position.length; i++) {
        if (position[i] % 2 === 0) {
            even++;
        } else {
            odd++;
        }
    }
    return Math.min(even, odd);
};

짝수와 홀수의 갯수를 구해서 둘 중 작은 수가 정답이다.
도대체 이런 기발한 아이디어는 어떻게 생각할 수 있게 되는 걸까…?
더 노력하자..!