안녕하세요! Sooho입니다. 코딜리티 문제라는 코딩연습 사이트를 추천받아서 오늘부터 한문제씩 풀어보려고 합니다!
혹시 연습하시고자 하신다면 아래의 링크로 이동하시면 됩니다! (영어로 되어 있어서 살짝 적응할 시간이 필요합니다)
코딜리티(codility) 사이트 주소
https://codility.com/programmers
1. Binary Gap 문제 설명
-
답안은 solution(N)이라는 함수를 활용해서 답안을 작성하게 되어있습니다.
-
N은 positive integer(양의 정수)로 2진수로 변환하는 과정이 필요합니다.
-
2진수로 변환했을 때 1과 1 사이의 0의 최대 개수를 구하는 문제입니다.
2. 코딩
def solution(N):
binary_num = bin(N).lstrip('0b')
count = 0
max_count = 0
for i in binary_num:
if i=='1':
if max_count < count :
max_count = count
count = 0
else :
count = 0
else :
count += 1
return max_count
-
2진수로 바꾸는 함수 bin(N)을 적용해보면 string형태로 '0b10110'가 출력이 되어 lstrip으로 0b를 제거해줬습니다.
위의 코딩 제출한 뒤에 count = 0를 주는 부분에서 굳이 else:를 쓸 이유가 없다고 생각해서 바꿔봤습니다.
def solution(N):
binary_num = bin(N).lstrip('0b')
count = 0
max_count = 0
for i in binary_num:
if i == '1':
if max_count < count:
max_count = count
count =0
else :
count +=1
return max_count
3. 결과
- 결과를 제출하게 되면 아래와 같이 Score와 각종 case에 대해 프로그램의 이상 여부를 알려줍니다.
이상으로 Binary Gap 문제/풀이를 마치겠습니다!
혹시 더 좋은 방법이나 오류가 있으면 언제든지 알려주시면 감사하겠습니다. 읽어주셔서 감사합니다.