codility - BinaryGap

TechN0·2025년 1월 7일

알고말고 알고리즘

목록 보기
9/22
post-thumbnail

크래프톤 인턴 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이 시작되거나 끝나는 때를 의미하니

    • maxgapcnt중 더 큰 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)

2개의 댓글

comment-user-thumbnail
2025년 1월 8일

장의장님 옆자리 히비고~

1개의 답글