자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다.
예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다.
자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요.
function countOne(num) {
let count = 0, ejin = num.toString(2).split('');
for(let i = 0; i < ejin.length; i++) {
if (ejin[i] == 1) { count++; }
}
return count;
}
function solution(n) {
let testNum = n;
while(true) {
testNum++;
if(countOne(testNum) == countOne(n)) return testNum;
}
}
countOne
함수: 자연수를 입력받고 2진수로 변환 후 1의 개수를 세는 함수
solution
함수: 반복문과 countOne
함수로 n
의 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
}
}
❖ match
match()
메서드는 문자열이 정규식과 매치되는 부분을 검색한다.
regexp
: 정규식 개체,RegExp
가 아닌 객체obj
가 전달되면,new RegExp(obj)
를 사용하여 암묵적으로RegExp
로 변환됩니다. 매개변수를 전달하지 않고 match()를 사용하면, 빈 문자열:[""]
이 있는 Array가 반환됩니다.결과값
문자열이 정규식과 일치하면, 일치하는 전체 문자열을 첫 번째 요소로 포함하는
Array
를 반환한 다음 괄호 안에 캡처된 결과가 옵니다. 일치하는 것이 없으면null
이 반환됩니다.