Collctions.frequecy
함수를 사용해서 1의 개수를 카운팅해준다.import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
class Solution {
public int solution(int n) {
String binaryString = Integer.toBinaryString(n);
List<Character> characters = binaryString.chars()
.mapToObj(c -> (char) c)
.collect(Collectors.toList());
int frequency = Collections.frequency(characters, '1');
for (int i = n + 1; ; i++) {
List<Character> characterList = Integer.toBinaryString(i).chars()
.mapToObj(c -> (char) c)
.collect(Collectors.toList());
int nextFrequency = Collections.frequency(characterList, '1');
if(frequency == nextFrequency){
return i;
}
}
}
}
bitcount()
라는 함수가 있었다.class Solution {
public int solution(int n) {
int frequency = Integer.bitCount(n);
for (int i = n + 1; ; i++) {
if(frequency == Integer.bitCount(i)){
return i;
}
}
}
}
매번 코테 풀때마다 드는 생각은...이걸 어떻게 다 알고있는건가..