[프로그래머스] 2개 이하로 다른 비트 (JS)

hhkim·2023년 10월 2일
0

Algorithm - JavaScript

목록 보기
148/188
post-thumbnail

풀이 과정

  • 4로 나눴을 때 나머지가 3인 수들은 올림이 될 때 2자리 이상 변화가 생기므로 따로 계산이 필요
    • 규칙을 찾아보면 마지막 01을 10으로 바꿔주면 됨
    • 모두 1인 경우(예: 7, 15) 앞에 0 붙여서 찾기
  • 나머지 수들은 바로 다음 수가 답

코드

function solution(numbers) {
  const result = [];
  for (const num of numbers) {
    if (num % 4 !== 3) {
      result.push(num + 1);
      continue;
    }
    let str = num.toString(2);
    if (str.indexOf('0') < 0) str = '0' + str;
    const i = str.lastIndexOf('01');
    const nextStr = str.slice(0, i) + '10' + str.slice(i + 2);
    result.push(parseInt(nextStr, 2));
  }
  return result;
}

🤔

비트 연산에 약해서 다른 사람들처럼 수학적인 규칙이 아니라 노트에 수를 다 써가면서 규칙을 찾았다...
1시간 넘게 걸렸지만 풀어서 뿌듯

0개의 댓글