https://programmers.co.kr/learn/courses/30/lessons/12911
기본
특별한 알고리즘은 필요 없고 Integer의 toBinaryString 메소드만 기억하면 된다.
처음에 while문으로 이진수를 구했다가 시간초과가 떴다.
이진수로 변환하고 1의 개수만 구하면 된다.
class Solution {
public int solution(int n) {
int answer = 0;
int decimal = n;
int check = 0;
String binary = Integer.toBinaryString(decimal);
for (int i = 0; i < binary.length(); i++) {
if (binary.charAt(i) == '1') {
check++;
}
}
while (true) {
int compareDecimal = ++n;
int compareCheck = 0;
String compareBinary = Integer.toBinaryString(compareDecimal);
for (int i = 0; i < compareBinary.length(); i++) {
if (compareBinary.charAt(i) == '1') {
compareCheck++;
}
}
if (check == compareCheck) {
answer = compareDecimal;
break;
}
}
return answer;
}
}