[리트코드] 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);
};
짝수와 홀수의 갯수를 구해서 둘 중 작은 수가 정답이다.
도대체 이런 기발한 아이디어는 어떻게 생각할 수 있게 되는 걸까…?
더 노력하자..!