
😎풀이
start와 goal 두 정수 2진수 형태로 형변환
- 두 정수 중 더 긴 정수에 맞춰
0으로 길이 맞춤
- 두 정수를 순회하며, 비트가 상이할 경우
flip 진행
- 총
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('')
}