프로그래머스 - 다음 큰 숫자

front_pica·2021년 5월 27일
0

문제

풀이과정

  1. 주어진 숫자를 2진수로 변환하여 filter함수로 1인것을 추출하여 길이를 구한다.
  2. while문을 이용하여 count변수와 함께 다음 숫자를 하나씩 찾으며 1의 갯수가 같으면 while문 종료 answer에 그 숫자를 리턴해준다.

코드

function solution(n) {
  //주어진 숫자의 1의 갯수가 담긴 변수
  const currentNumLength = n.toString(2).split("").filter(item => parseInt(item) === 1).length;
  
  let answer = n;
  let count = 1;
  
  while(true) {
      //count만큼 더해진 숫자의 1의 갯수가 담긴 변수
      const nextNumLength = (n + count).toString(2).split("").filter(item => parseInt(item) === 1).length;
      
      if(currentNumLength === nextNumLength) {
          answer = (n+count);
          break;
      } else {
          count++;
      }
  }

  return answer;
}

다른사람들의 풀이를 보니 정규표현식을 이용한분들도 많고
신기하게 shift를 이용한 풀이법도 있어서 각 풀이법도 적용시켜서 해 보았다.

profile
한걸음씩

0개의 댓글