BinaryGap - Easy (구현, codilty)

2023. 1. 11. 09:36코딩 테스트 준비

728x90
반응형
def solution(N):
    binary1 = []
    binary = []
    sig = []
    cnt = 0
    
    while N != 0:
        binary.append(N%2)
        if N%2 == 1:
            if len(binary1) > 0:
                sig.append(binary1[-1]-cnt) 
            binary1.append(cnt)
        N = N//2
        cnt += 1

    binary.reverse()
    if len(binary1) == len(binary) or len(binary1) == 1:
        return 0
    if sum(binary) == 0:
        return 0
        
    return (min(sig)+1) * -1

정수를 이진수한 것에서 1과 1 사이의 거리 중 가장 긴 값을 구하는 문제였다.

 

반복문을 쓰기보다는 한 번의 순회에 필요한 값을 모두 구하고 계산하는 식으로 풀었다.

 

이게 정확한 풀이인지는 모르겠지만 테스트 결과 100점이 나오긴 했다.

 

처음 codility 문제를 풀어봤는데 방식이 낯설어서 꽤나 헤멨다. 앞으로 틈틈히 풀어봐야겠다.

728x90
반응형