[LeetCode] 462. Minimum Moves to Equal Array Elements II

Chobby·2026년 3월 3일

LeetCode

목록 보기
1017/1035

😎풀이

모든 요소와의 편차를 최소화 하는 값은 중앙값이다.
해당 문제를 평균으로 풀이하려 했다면, 각 요소의 제곱의 편차를 최소화 하는 값을 찾으려 했던 것

  1. nums를 오름차 순으로 정렬
  2. 중앙값 탐색
    2-1. 홀수개의 요소라면, 중앙 인덱스의 수가 중앙값
    2-2. 짝수개의 요소라면, 중앙 두 요소의 평균이 중앙값
  3. 각 요소와 중앙값의 편차를 누적
  4. 누적된 편차 반환
function minMoves2(nums: number[]): number {
    const n = nums.length
    const sorted = nums.toSorted((a, b) => a - b)
    const halfIdx = Math.floor(n / 2)
    let median = sorted[halfIdx]
    if((n & 1) === 0) {
        const medians = sorted[halfIdx - 1] + sorted[halfIdx]
        median = Math.floor(medians / 2)
    }
    let moves = 0
    for(const num of nums) {
        moves += Math.abs(median - num)
    }
    return moves
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글