
🐹 접근
먼저 n 을 이진수로 변환한다. ㄴ 자바스크립트에서 어떻게 변환해주지?! -> toString(2), 숫자 한 개 단위로 변환되므로 split 해준다.
n 을 1 씩 커지게 하면서 반복문을 이용하여 이진수의 1 의 개수가 같아질 때까지 돌린다.
이진수의 1 의 개수 또한 별개로 반복문을 이용하여 변수에 담아둔다 ex.count
🧶 풀이
function count(n) {
let count = 0;
let binary = n.toString(2).split('');
for (let i = 0; i < binary.length; i ++) {
if(binary[i] == 1) count ++;
}
return count;
}
function solution(n) {
let answer = n;
while(true) {
answer ++;
if(count(answer) == count(n)) return answer;
}
}
근데 함수 두 개에서 같은 매개변수 써도 되나
라는 찜찜함 누가 훈수 둬줘 알고리즘 오랜만에 풀어서 하나도 모르게써요...
🧀 다른 사람의 풀이
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);
}
천재임...
/g 는 정규 표현식에서 사용되는 것이라고 한다.
n 과 n 다음 숫자의 이진수를 탐색해서 1 과 일치하는 것을 반환한 것의 length 가 두 개가 같을 때 그 값을 반환한다.
정규 표현식 뒤의 "g"는 전체 문자열을 탐색해서 모든 일치를 반환하도록 지정하는 전역 탐색 플래그입니다.
function solution(n) {
let oneNum = n.toString(2).split("1").length;
while (true) {
n++;
if (n.toString(2).split("1").length === oneNum) return n;
}
}
또 천재다... 나 처럼 count 따로 안 만들고 1 들의 length 를 구해서 개수를 비교하는 법...
'Algorithm 뽀개기' 카테고리의 다른 글
[백준] 10820 문자열 분석 (Python) (1) | 2024.07.03 |
---|---|
[백준] 17298 오큰수 (Python) (0) | 2024.07.01 |
[백준] 1874 스택 수열 (Python) (0) | 2024.06.28 |
[Programmers] Lv.1 시저 암호 (JavaScript) (0) | 2024.05.03 |
[프로그래머스] 자릿수 더하기 (JavaScript) (0) | 2024.03.27 |

🐹 접근
먼저 n 을 이진수로 변환한다. ㄴ 자바스크립트에서 어떻게 변환해주지?! -> toString(2), 숫자 한 개 단위로 변환되므로 split 해준다.
n 을 1 씩 커지게 하면서 반복문을 이용하여 이진수의 1 의 개수가 같아질 때까지 돌린다.
이진수의 1 의 개수 또한 별개로 반복문을 이용하여 변수에 담아둔다 ex.count
🧶 풀이
function count(n) {
let count = 0;
let binary = n.toString(2).split('');
for (let i = 0; i < binary.length; i ++) {
if(binary[i] == 1) count ++;
}
return count;
}
function solution(n) {
let answer = n;
while(true) {
answer ++;
if(count(answer) == count(n)) return answer;
}
}
근데 함수 두 개에서 같은 매개변수 써도 되나
라는 찜찜함 누가 훈수 둬줘 알고리즘 오랜만에 풀어서 하나도 모르게써요...
🧀 다른 사람의 풀이
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);
}
천재임...
/g 는 정규 표현식에서 사용되는 것이라고 한다.
n 과 n 다음 숫자의 이진수를 탐색해서 1 과 일치하는 것을 반환한 것의 length 가 두 개가 같을 때 그 값을 반환한다.
정규 표현식 뒤의 "g"는 전체 문자열을 탐색해서 모든 일치를 반환하도록 지정하는 전역 탐색 플래그입니다.
function solution(n) {
let oneNum = n.toString(2).split("1").length;
while (true) {
n++;
if (n.toString(2).split("1").length === oneNum) return n;
}
}
또 천재다... 나 처럼 count 따로 안 만들고 1 들의 length 를 구해서 개수를 비교하는 법...
'Algorithm 뽀개기' 카테고리의 다른 글
[백준] 10820 문자열 분석 (Python) (1) | 2024.07.03 |
---|---|
[백준] 17298 오큰수 (Python) (0) | 2024.07.01 |
[백준] 1874 스택 수열 (Python) (0) | 2024.06.28 |
[Programmers] Lv.1 시저 암호 (JavaScript) (0) | 2024.05.03 |
[프로그래머스] 자릿수 더하기 (JavaScript) (0) | 2024.03.27 |