반응형
문제
풀이
이번 문제는 못풀겠어서 질문하기를 통해 힌트를 보고 말았다 (ㅠㅠ)
n이 1이 될 때까지,
n을 2를 나누고
2로 나누어지지 않으면 -1하고, answer++한다.
function solution(n) {
let answer = 0;
while(n > 0) {
if(n % 2 === 1) {
answer++;
n--;
} else {
n /= 2;
}
}
return answer;
}
다른 풀이
- 2진수로 변환하고, 그것을 배열로 변환
- 1인 부분이 2로 나눴을 때 나머지가 있는 부분. 따라서 배열에 있는 수들을 모두 더한(reduce) 수가 정답이다.
function solution(n) {
if(n === 1) return 1;
const nArr = Array.from(n.toString(2));
return nArr.reduce((a, b) => (+a) + (+b));
}
어떻게 이런 생각을..
반응형
'CS > 알고리즘' 카테고리의 다른 글
[230416] 가장 가까운 같은 글자 (0) | 2023.04.16 |
---|---|
[230416] 푸드 파이트 대회 (0) | 2023.04.16 |
[230414] N개의 최소공배수 (0) | 2023.04.14 |
[230414] 예상 대진표 (0) | 2023.04.14 |
[230413] 크기가 작은 부분문자열 (0) | 2023.04.13 |