(코딜리티) Lesson 1 : Binary Gap - Python
가끔 코딜리티를 활용한 코딩테스트를 치는 기업들이 보이는 것 같아서.. 접해보지만,
주관적인 생각으로 많이 불편하다..?
프로그래머스는 문제를 풀면 다른사람들과 코드 비교도 할 수 있고, 본인이 이전에 짜놓은 코드를 볼 수 있는데,
이건 아직 그런 부분이 많이 미흡해서 문제풀고 공부하는 방안으로만 생각하던지, 본인이 푼 문제는 이렇게 저장해두는 것이 좋은 것 같습니다.
문제 : app.codility.com/programmers/lessons/1-iterations/
1. Iterations lesson - Learn to Code - Codility
Find longest sequence of zeros in binary representation of an integer.
app.codility.com
문제 설명
10진수를 주었을 때, 2진수의 1사이의 binary gap중 큰 값을 return하시오.
예를 들어, 9인 경우 이진수는 1001일 때, binary gap은 2입니다. 529인 경우는 1000010001일 때, 4와 3의 값을 가집니다. 20은 10100으로 1개, 15는 1111로 0개, 32는 100000으로 0개 입니다.
즉, N = 1041일 때, 이진수는 10000010001이므로 5를 return합니다. binary gap이 없는 경우는 0을 return합니다.
제한 사항
N = 1 ~ 2,147,483,647
코드
def solution(N):
binary = format(N, 'b')
m = 0
count = 0
for i in binary:
if '1' == i:
if m < count :
m = count
count = 0
else :
count += 1
return m
* 사실 처음에는 binary로 만드는 법을 몰라서 직접 수식으로 짠게 아래 코드입니다..
def solution(N):
binary = []
while N > 1 :
r = N%2
N = N//2
binary.append(r)
m = 0
count = 0
while binary:
if 1 == binary.pop():
if m < count :
m = count
count = 0
else :
count +=1
return m
간단한 문제라 그런지 둘다 100% 나오긴 했습니다 ㅎㅎ...
제일 처음 짠 코드는 이진수와 count하는 2개의 while문을 하나로 합칠 수도 있을 것 같네요...