프로그래머스 - 2개 이하로 다른 비트
1369 단어 알고리즘JavaScriptJavaScript
07.28에 푼 문제입니다🌷
풀이법
2가지 경우로 나뉜다.
1. 0bit 가 있는 경우
- 가장 뒤에 있는 0 을 1로 바꾼다!
- 만약 0 뒤에 1이 있으면 1을 0으로 바꾼다!
예를 들어서 2를 이진수로 바꾸면 10이 된다.
이럴 땐 그냥 뒤에 0을 1로 바꾸면 된다.
11을 예로 들면 2진수로 바꾸면 1011이 된다.
가장 뒤에있는 0을 찾고 1로 바꿔준다.
바꿔준 1의 뒤에 있는 1을 0으로 바꾼다.
답은 1101이 된다.
2. 0bit가 없는 경우
- 맨 앞 1을 0으로 바꾼다.
- unshift()를 이용해서 1을 앞에 삽입한다.
예를 들어 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;
}
Author And Source
이 문제에 관하여(프로그래머스 - 2개 이하로 다른 비트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mlsh1112/프로그래머스-2개-이하로-다른-비트저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)