Strong Root

난이도 ★


문제를 보시려면 여기를 클릭



 

힌트

 그냥 빼먹는 것 없이 반복문을 잘 돌면 됩니다




이하는 코드입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public int solution(int N) {
    String biStr = Integer.toBinaryString(N);
    int firstOneIndex = getNextOneIndex(biStr, 0);
 
    if (firstOneIndex < 0) {
        return 0;
    }
 
    int maxGap = 0;
 
    while (true) {
        int nextOneIndex = getNextOneIndex(biStr, firstOneIndex + 1);
 
        if (nextOneIndex < 0) {
            break;
        }
 
        int gap = nextOneIndex - firstOneIndex - 1;
 
        if (gap > maxGap) {
            maxGap = gap;
        }
 
        firstOneIndex = nextOneIndex;
    }
 
    return maxGap;
}
 
private int getNextOneIndex(String biStr, int startIndex) {
    int nextOneIndex = -1;
 
    for (int i = startIndex; i < biStr.length(); i++) {
        char c = biStr.charAt(i);
 
        if (c == '1') {
            nextOneIndex = i;
            break;
        }
    }
 
    return nextOneIndex;
}
cs