😎풀이

  1. nums[i]는 32비트 정수로 표현된다는 전제 확인
  2. 비트 시프트를 최대 32번까지 반복
    2-1. nums 순회
    2-2. 각 숫자에 대해 i번 시프트를 수행하여 끝 비트가 1인 경우 탐색
    2-3. 끝 비트가 1인 경우 * 끝 비트가 1이 아닌 경우 = 해밍 거리
  3. 누적된 총 해밍거리 반환
function totalHammingDistance(nums: number[]): number {
    let totalDist = 0
    const n = nums.length
    for(let i = 1; i <= 32; i++) {
        let countOne = 0
        for(const num of nums) {
            if((num >> i) & 1) countOne++
        }
        totalDist += countOne * (n - countOne)
    }
    return totalDist
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글