07.28에 푼 문제입니다🌷
2가지 경우로 나뉜다.
예를 들어서 2를 이진수로 바꾸면 10이 된다.
이럴 땐 그냥 뒤에 0을 1로 바꾸면 된다.
11을 예로 들면 2진수로 바꾸면 1011이 된다.
가장 뒤에있는 0을 찾고 1로 바꿔준다.
바꿔준 1의 뒤에 있는 1을 0으로 바꾼다.
답은 1101이 된다.
예를 들어 3을 이진수로 바꾸면 11이다.
맨 앞 1을 0으로 바꾸고 (01)
앞에 1을 추가한다. (101)
function solution(numbers) {
var answer = [];
numbers.map(number=>{
const bit = [...number.toString(2)]
let ans=-1
for(let i = bit.length-1;i>=0;i--){
if(bit[i]==='0'){
bit[i]='1'
if(i<bit.length-1) bit[i+1]='0'
ans = parseInt(bit.join(''),2)
answer.push(ans)
break
}
}
if(ans===-1){
bit[0]='0'
bit.unshift('1')
answer.push(parseInt(bit.join(''),2))
}
})
return answer;
}