Algolithm-Leetcode/Bit Manipulation
Number of 1 Bits
꿀잠마스터
2026. 8. 13. 20:43
주어진 양수의 비트의 값이 1의 개수를 세는 문제이다. 최초 해결 후 비트연산자 학습을 위해 추가로 해결해보았으며 총 3가지 방법으로 해결해보았다.
- 일단 주어진 자연수를 2진수로 변환하여 문자열에서 '1'의 개수를 세는 방법으로 해결하였다.
- 하지만 비트 조작의 카테고리에 맞춰 풀기 위해 비트 이동 연산자와 '&' 논리 연산자를 이용하여 해결해보았다.
- 관련해서 비트 연산자를 공부하던 중 Java 의 경우는 개수를 세어주는 Integer 메서드 bitCount 가 있다는 사실도 알았다. 해당 메서드를 이용해서도 바로 문제가 해결된다.
아래 코드는 세가지 모두 적어두었다.
public class Solution {
public int hammingWeight(int n) {
// 1. 문자열 이용
// String s = Integer.toString(n, 2);
// int answer = 0;
// for(char c: s.toCharArray()){
// if(c == '1') answer++;
// }
// return answer;
// 2. 비트연산자 이용
// int answer = 0;
// while(n != 0){
// if((n & 1) == 1) answer++;
// n = n >> 1;
// }
// return answer;
// 3. Java Integer 메서드 이용
return Integer.bitCount(n);
}
}