다음 큰 숫자

Mudi·2023년 2월 3일
0

[JavaScript] Coding Test

목록 보기
22/23
post-thumbnail

다음 큰 숫자

프로그래머스 다음 큰 숫자


문제

자연수 n이 주어졌을 때, 다음 조건을 만족하는 n보다 큰 숫자를 반환하는 함수를 완성해주세요.

  • n보다 큰 자연수
  • 2진수로 변환했을 때 1의 갯수가 n을 2진수로 변환했을 때 1의 갯수와 같음
  • 위 조건을 만족하는 수 중 가장 작은 수

제한

  • n은 1,000,000 이하의 자연수 입니다.

접근

n을 2진수로 변환했을 때 1의 갯수를 구하고, n에 1씩 더하면서 2진수 변환한 값의 1의 개수가 같으면 그 값을 반환합니다.


풀이

자연수 n의 2진수 변환하여 1의 갯수 구하기

let n1 = n.toString(2).split('').filter(x=> x === '1').length;

n을 2진수 변환하여 split으로 분리하고 filter로 1만 골라낸 배열의 길이를 구합니다.


n보다 큰 숫자 탐색

for(let m = n+1; m < 1000000; m++){
  let m1 = m.toString(2).split('').filter(x=> x === '1').length;
  if(m1 === n1) return m;

- n보다 큰 수를 m이라하고, for문으로 1씩 더하며 탐색할 수 있도록 합니다.

  • m2는 m을 2진수 변환하고 1의 갯수를 구한 값입니다.
  • m1과 n1이 같다면 m을 반환합니다.

나의 코드

function solution(n) {
    let answer = 0;
    let n1 = n.toString(2).split('').filter(x=> x === '1').length;
    for(let m = n+1; m < 1000000; m++){
        let m1 = m.toString(2).split('').filter(x=> x === '1').length;
        if(m1 === n1) return m;
    }
}

0개의 댓글