크래프톤 인턴 1차 서류 합격을 해서 코딩테스트를 보게 되었는데 영어로 진행할수도 있어서 영어문제를 푸는 연습 시작함
https://app.codility.com/programmers/lessons/1-iterations/binary_gap/
정수 N이 주어지는데 N을 이진수로 변환 했을 때 1 두 개 사이에 연속된 0의 최대 길이를 구하는 문제였다.
예시로 1001이 있으면 여기서 BinaryGap은 1 사이에 0 이 두 개 있으니 2가 되는 것이다.
일단
N을 이진수로 변환을 한 변수 num을 문자열로 정의하고
최근 검사한 1과 1 사이의 BinaryGap을 저장할 cnt를 정의
최대 BinaryGap을 저장할 maxgap을 정의
num의 길이만큼 for문을 돈다.
i == 1 일 때는 BinaryGap이 시작되거나 끝나는 때를 의미하니
maxgap과 cnt중 더 큰 BinaryGap을 maxgap에 넣어준다i ≠1 일 때는 cnt += 1
끝나면 maxgap을 return
def solution(N):
num = format(N, 'b')
maxgap = 0
cnt = 0
for i in num:
if i == '1':
maxgap = max(maxgap, cnt)
cnt = 0
else:
cnt += 1
return(maxgap)
장의장님 옆자리 히비고~