코딩테스트
[JS] 다음 큰 숫자
미안하다 강림이 좀 늦었다
2023. 11. 13. 20:46
난이도: Lv.2
문제: https://school.programmers.co.kr/learn/courses/30/lessons/12911
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
알고리즘
1의 개수를 카운팅 하는 방법
1. toString() 함수로 2진수 문자열로 변환
2. 1을 정규표현식을 사용하여 replace() 함수로 0 제거
3. 2의 길이 구하기
다음 큰 숫자 구하는 방법
n + 1인 자연수부터 2진수의 1의 개수를 카운팅하여 n을 2진수로 변환한 것의 1의 개수와 동일한지 확인
코드
function solution(n) {
let answer = n + 1;
const nOneCount = n.toString(2).replace(/0/g, '').length;
while (true) {
if (answer.toString(2).replace(/0/g, '').length === nOneCount) { break; }
answer++;
}
return answer;
}
주저리
이진 변환 반복하기 문제에서 썼던 코드랑 동일한 문제다. ez하게 풀어서 할 말이 딱히 없군