https://school.programmers.co.kr/learn/courses/30/lessons/12911
- 1씩 더해서 1의 갯수가 같을때 리턴
function getOneCount (n) {
return [...n].filter(e => e === '1').length;
}
function solution(n) {
var answer = 0;
let newNum = n;
const originalOneCount = getOneCount(n.toString(2));
while(true) {
newNum++;
if (getOneCount(newNum.toString(2)) === originalOneCount) {
return newNum;
}
}
return answer;
}
- 배열 안에서 1의 갯수 구하기
- filter 보다 string.match(regex).length
- 재귀함수 (처음, 비교할 수 = 처음+1)
- 맨 처음에 비교할 수를 처음+1으로 해서 비교하고, 그 다음 재귀부터는 func(처음, 비교할수+1) 을 넣어줘서 처음과 그 다다음 수를 비교한다.
function solution(n, newNum = n+1) {
return n.toString(2).match(/1/g).length === newNum.toString(2).match(/1/g).length
? newNum
: solution(n, newNum+1);
}
'알고리즘' 카테고리의 다른 글
[프로그래머스] 이진 변환 반복하기 (0) | 2023.07.13 |
---|---|
[프로그래머스] 짝지어 제거하기 (stack) (0) | 2023.06.08 |
[프로그래머스] 기사단원의 무기 (0) | 2023.06.07 |
[프로그래머스/카블] 1차 다트게임 (0) | 2023.06.06 |
[프로그래머스/카카오 블라인드] 실패율 (0) | 2023.06.06 |