[LeetCode] 2220. Minimum Bit Flips to Convert Number

Chobby·3일 전
1

LeetCode

목록 보기
690/710

😎풀이

  1. startgoal 두 정수 2진수 형태로 형변환
  2. 두 정수 중 더 긴 정수에 맞춰 0으로 길이 맞춤
  3. 두 정수를 순회하며, 비트가 상이할 경우 flip 진행
  4. flip된 수 반환
function minBitFlips(start: number, goal: number): number {
    let startBit = numToBit(start)
    let goalBit = numToBit(goal)
    const maxLen = Math.max(startBit.length, goalBit.length)
    startBit = startBit.padStart(maxLen, '0')
    goalBit = goalBit.padStart(maxLen, '0')
    let flip = 0
    for(let i = 0; i < maxLen; i++) {
        if(startBit[i] !== goalBit[i]) flip++
    }

    return flip
};

function numToBit(num: number) {
    let remain = num
    const bit = []
    while(remain) {
        bit.push(remain % 2)
        remain = Math.floor(remain / 2)
    }
    return bit.reverse().join('')
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글