LeetCode) 191. Number of 1 Bits

유병수·2023년 5월 19일
0

191. Number of 1 Bits

10진수 숫자가 주어졌을때, 숫자를 이진수로 변환하고 1이 몇개가 있는지 카운트 하면 되는 문제. 나는 당연히 2진수로 바꾼뒤에 1의 카운트를 세어줬는데 1ms가 걸렸다.

사람들 답에 0ms 가 있어서 확인해봤더니, 비트연산을 사용해서 해결했다.

public class Solution {
    // you need to treat n as an unsigned value
    public int hammingWeight(int n) {
        String binaryString = Integer.toBinaryString(n);
        
        int count = 0;
        for(int i = 0; i < binaryString.length(); i++){
            if(binaryString.charAt(i) == '1'){
                count++;
            }
        }
        return count;
    }
}

비트 연산 사용

public class Solution {
    // you need to treat n as an unsigned value
    public int hammingWeight(int n) {
        int count = 0;        
        while(n != 0){
            
            if((n & 1) == 1) count++;
            n = n >>> 1;
        }
        return count;
    }
}

그런데 똑같은 코드지만 나는 1ms가 나와서 직접 뭐가 더 빠른지 한번 실험해봤다.

둘다 0.0으로 도출된다. 차이 거의 없음

0개의 댓글