Computer Science/알고리즘 ( Algorithm )

Codility - Binary gap

bugtype 2019. 3. 11. 10:57


Binary gap은 양의 정수로 이루어져 있습니다. 양 끝에 1로 둘러 쌓이고 연속적으로 0으로 나열된  최댓값 입니다.

예를 들어서, 숫자 9를 바이너리로 표현하면 1001이고 Binary gap이 2인 길이가 됩니다. 숫자 529는 1000010001이고 4와 3입니다.

숫자 20은 10100 이고 길이가 1이 됩니다 .15는 1111으로 Binary gap이 존재하지 않습니다 .숫자 32는 100000으로 존재하지 않습니다.

양의 정수가 주어지고 제일 길이가 큰 Binary gap을 구해주세요. 만약 존재하지 않다면 0을 반환해주세요.


예를 들어서 N = 1041이면 5를 return 해주면 됩니다.

왜냐하면 바이너리로 표현하면 1000010001에서 제일 길이가 큰 5가 정답이 됩니다.




python

# you can write to stdout for debugging purposes, e.g. # print("this is a debug message") def solution(N): # write your code in Python 3.6 b = bin(N)[2:] # 2진수로 변경. maxGap = 0 start = False count = 0 for x in b: if x=='1' and start==False: start=True elif x=='0' and start==True: count+=1 elif x=='1' and start==True: maxGap = max(maxGap,count) count=0 return maxGap pass




java



class Solution { public int solution(int N) { // write your code in Java SE 8 String bin = Integer.toBinaryString(N); Boolean start = false; int count = 0; int maxCount = 0; for(char c : bin.toCharArray()){ if ( c=='1' && start == false ){ start = true; } else if ( c=='0' && start) { count+=1; } else if ( c=='1' && start){ maxCount = Math.max(count,maxCount); count=0; } } return maxCount; } }

'Computer Science > 알고리즘 ( Algorithm )' 카테고리의 다른 글

Codility - Nesting  (0) 2019.03.11
Codility - CyclicRotation  (0) 2019.03.11
카카오 오픈채팅방  (0) 2019.01.30
python string 다루기  (0) 2019.01.01
[python] list 가지고 놀기  (0) 2018.12.22