1번 문제 부터 시간이 꽤나 걸렸다.
우선, 문제를 바라볼때 처음부터 냅다 코딩 하는게 아니라, 문제의 핵심을 정확하게 이해하고 시작하자.
이 문제의 규칙성 핵심은, 뒤에 있는 0 은 정리를 하는것이 핵심이였다.
우리가 알고자 하는것은 결국 1과 1사이의 0의 갯수중 가장 큰것을 찾는것이기 때문에 가장 뒤에 있는 0 은 찌꺼기 라는것을 알 수 있다.
(ㅠ.ㅠ 진짜 많은 뻘짓을 했다...)
코테에서 toBinaryString library 를 쓰게 해줄지 모르겠지만, 저건 코딩 쉬우니깐...?
public int solution(int N) {
// write your code in Java SE 8
String binary = Integer.toBinaryString(N);
int start = 0;
int last = 0;
for(int i = 0; i <= binary.length(); i++) {
if(binary.charAt(i) == '1') {
last = i;
}
}
String newBinary = binary.substring(start, last+1);
String[] arr = newBinary.split("1");
int maxNum = 0;
for(String em : arr){
if(maxNum < em.length()){
maxNum = em.length();
}
}
return maxNum;
}