Algorithm

Leetcode 338. Counting Bits

KANG_G1 2023. 2. 24. 16:02
// example 1

Input: n = 2
Output: [0,1,1]
Explanation:
0 --> 0
1 --> 1
2 --> 10

정수 n이 주어졌을 때, 길이 n + 1의 배열 ans를 반환하여 각 i(0 <= i <= n)에 대해 ans[i]는 i의 이진 표현에서 1의 수이다.

 

 

=> 인자로 넘어온 n에 대해 2진수로 변환 후, 2진수로 변환한 요소들을 더하는 문제였다.

 

인자로 넘어온 Integer에 대해 2진수로 변환 후 넣으면 해결될 줄 알았지만

요소를 더해줘야 하는 부분도 있었기에 이중 for문을 사용한 코드를 작성했다.

인자 n을 toString()을 사용해 Integer-> String으로 타입이 변한 것을 이용했고,

num.length를 활용해 for문을 사용할 수 있었다.

 

그리고 다시 요소를 더해줄 땐 Number()를 사용해 Integer 타입으로 변환했고

최종적으로 숫자 배열을 만들어 return했다.

/**
 * @param {number} n
 * @return {number[]}
 */
var countBits = function(n) {
    let result = [];
    
    for(let i=0; i<=n; i++) {
       const num = i.toString(2);
       let val = 0;
        for(let j=0; j<num.length; j++){
            val += Number(num[j]);
        }
    result.push(val);
    }
    return result;
};