[javascript]다음 큰 숫자

YS·2023년 11월 30일
0

coadingTest

목록 보기
4/5

[내가 생각한 알고리즘]
10진수n을 2진수로 변경 -> 2진수n의 1의개수 카운팅(nCount) -> 무한반복문을 통하여 n을 1씩 증가하여 앞과 같은 과정을 통하여 1의 개수가 같을 시 break;

[나의 코드]

const solution = (n) =>{
  let answer = 0;
  let boolean = true;
  let n2 = n.toString(2);
  let nCount = 0;
  for(let i=0; i<n2.length; i++){
    if(n2[i] === '1') nCount++;
  }
  while(boolean){
    n++;
    let mCount =0;
    n.toString(2).split('').map((num)=>{if(num === '1')mCount++;})
    if(mCount === nCount) boolean=false;
  }
  return n;
}

[결과]

실행 테스트에서는 다 성공했으나 효율성 테스트에서 다 실패했다. 아무래도 무한반복문과 일일이 반복작업이라 이러한 결과가 나오지 않았나 예상된다.

[수정]

코드를 이리저리 수정하다 처음으로 돌아와 실행하기를 해봤더니 됐다... 인터넷 상태가 문제였나??

[다른 분의 문제풀이]

function solution(n,a=n+1) {
    return n.toString(2).match(/1/g).length == a.toString(2).match(/1/g).length ? a : solution(n,a+1);
}

어떻게 이런 생각을 할 수 있지 감탄밖에 안나온다 나도 저러한 발상을 할 수 있도록 더 성장하자 화이팅 !!

profile
"나의 개발 노트"

0개의 댓글