[프로그래머스] 다음 큰 숫자

2023. 1. 31. 16:30기록/Programmers

    목차

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12911

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


나의 문제 풀이

function solution(n) {
    let answer = 0;
    let bigNum = n;
    
    while(true) {
        bigNum++;
        if (bigNum.toString(2).match(/1/g).length === n.toString(2).match(/1/g).length) {
            answer = bigNum;
            break;
        }
    }
    
    return answer;
}
  • bigNum 변수에 주어진 숫자 n을 할당함
  • while 문에 true 를 넣어 무한 루프를 만듦
    • bigNum 변수에 1을 더함 (다음 큰 숫자는 주어진 숫자 n 보다 커야 함)
    • bigNum 변수를 2진수로 변환한 후의 1의 개수와 주어진 숫자 n을 2진수로 변환한 후의 1의 개수가 같을 경우
    • 정답 변수에 bigNum을 할당하고 무한 루프를 빠져나옴 (bigNum은 다음 큰 숫자)

다른 사람의 문제 풀이

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);
}
function nextBigNumber(n) {
    var size = n.toString(2).match(/1/g).length
    while(n++) {
        if(size === n.toString(2).match(/1/g).length) return n
    }
}