https://school.programmers.co.kr/learn/courses/30/lessons/12911
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
function solution(n) {
var result = 0;
let onecount = 0;
let monecount = 0;
let mstr = '';
let marr = [];
let str = n.toString(2) + ''; // 1001110
let arr = str.split('');
for (i = 0; i < arr.length; i++) {
if (arr[i] == '1') onecount++;
} // n을 이진수로 변환했을 때의 1의 개수를 구한다.
let m = n + 1; // m의 초기값을 n+1로 설정해준다.
while (true) {
mstr = m.toString(2) + ''; // m을 이진수로 변환한 후 문자열로 바꿔주고,
marr = mstr.split(''); // 그걸 다시 배열로 바꿔준다.
monecount = 0; // m의 1의 개수를 0으로 초기화해준다.
for (i = 0; i < marr.length; i++) { // m의 1의 개수를 세어본다.
if (marr[i] == '1') monecount++;
}
if (monecount == onecount) { // m의 1의 개수가 n과 똑같다면,
result = m; //m은 결과값인 거.
break; // while문에서 탈출해준다.
}
m++; // 발견하지 못 했으면 m을 증가시켜 다시 한 번 찾아본다.
}
return result;
}
'코딩테스트 > LV. 1' 카테고리의 다른 글
LV1 :: 행렬의 덧셈 (0) | 2023.10.09 |
---|---|
LV1 :: 최솟값 만들기 (0) | 2023.10.09 |
LV1 :: 이진 변환 반복하기 (0) | 2023.10.09 |
LV1 :: JadenCase 문자열 만들기 (0) | 2023.10.09 |
LV1 :: 푸드 파이트 대회 (0) | 2023.10.09 |
댓글