본문 바로가기
개발/알고리즘 문제

[Codility] BinaryGap

by 유다110 2017. 11. 1.
반응형

0.

코딩 소모임에서 코딜리티codility, 해커랭크hackerrank 를 알게되었다.

코딜리티는 여기저기서 들어보긴 했는데 가입해서 문제를 풀어보는 건 처음이었다.

자동 채점 방식을 그닥 좋아하지 않아서 프로젝트 오일러를 좋아했었는데, 이것도 익숙해지면 괜찮을 듯.


1. 문제

binary gap은 1000010001과 같은 2진법 수에서 1과 1사이에 있는 0의 개수이다.

리스트 N이 주어지면 여기에서 가장 긴 binary gap을 찾아야 한다.

- 마지막이 1이 아닌 0으로 끝날 경우를 체크해주어야 한다. 이걸 체크 안해서 틀림


2. 답변

def solution(N):
    bin_str = bin(N).replace('0b', '')
    bin_gap_list = list(filter(None, bin_str.split('1')))
    if bin_str[-1] == '0':
        bin_gap_list.pop()
    if bin_gap_list:
        max_bin_gap = len(max(bin_gap_list, key=len))
    else:
        max_bin_gap = 0
    return max_bin_gap

프로그래밍 언어를 고르고 그 언어로 풀게 돼있는데,

# write your code in Python 2.7

이라 적혀있었지만 print() 괄호가 되는 걸로 봐서 python3도 지원하는 듯하다.


3.

결과는 이런 식으로 나온다.




테스트를 정말 세세하게 한다!

큰 수, 작은 수, 여러 가지 예외 상황 등 예외 조건들을 거의 다 집어넣는 듯 하다.

처음에 80%가 나왔는데 평범한 상황에서 벗어난 사소한 예외들을 염두에 두지 않아서 몇 개가 잡혔다.

어디서 틀렸는지 보고 그에 맞는 조건을 추가하니 모두 통과...


단점은 결과 화면을 끄고 나면 다시는 못 본다는 거...?

암만 찾아봐도 없다.


반응형

댓글