Integer.bitCount
를 이용해서 2진수로 변환한 1의 개수를 구한다.- 큰 수의 비트 수를 나타내는
bit_cnt
를 선언한다.- n을 증가시키고 bit_cnt와 원래 수의 1의 개수가 같으면 종료한다.
/*
* 프로그래머스 Lv2 - 다음 큰 숫자
* 문제링크:https://programmers.co.kr/learn/courses/30/lessons/12911
*/
class Solution {
public int solution(int n) {
int answer = 0;
int n_bit = Integer.bitCount(n);
int bit_cnt = 0; // 큰 수의 비트 수를 나타나는 변수
while(true) {
n++;
bit_cnt = Integer.bitCount(n);
if(bit_cnt == n_bit) {
answer = n;
break;
}
}
return answer;
}
}
Integer.bitCount라는 메소드를 이 문제를 통해 알게 되었고 그 덕분에 문제를 쉽게 풀 수 있었던 것 같다. 자바의 메소드를 잘 알지 못하는데 유용한 메소드가 은근히 많은 것 같다.