[프로그래머스] 다음 큰 숫자
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
}
}