해당 포스딩은 Codility 연습문제를 공부하기 위한 포스팅 입니다
Lesson 1. iterations의 BinaryGap 문제이다.
영어로 문제 푸는게 처음이라 이해하기도 쉽지 않았다.
문제를 해결하기 위해 필요한 알고리즘 사고를 순서대로 정리해 보았다.
1) 입력받은 N을 이진수로 고친다. bin
2) 1이 존재하는 인덱스를 list_one에 추가해서 1사이의 거리를 구한다.
3) 1과 1 사이의 거리가 존재하지 않으면 return 0
있는 경우에는 최대 거리를 return 해준다.
def solution(N):
bin_num = bin(N)
list_one = []
dist = 0
for i in range(len(bin_num)):
if bin_num[i] == '1':
list_one.append(i)
if len(list_one) == 1 or len(list_one) == 0:
return 0
else:
for i in range(1, len(list_one)):
dist = max(dist, list_one[i]-list_one[i-1]-1)
return dist
여차저차 첫 Codility 포스팅을 마치도록 하겠다 :)