-
(코딜리티) Lesson 1 : Binary Gap - PythonAlgorithm/코딜리티 2021. 1. 15. 00:36
가끔 코딜리티를 활용한 코딩테스트를 치는 기업들이 보이는 것 같아서.. 접해보지만,
주관적인 생각으로 많이 불편하다..?
프로그래머스는 문제를 풀면 다른사람들과 코드 비교도 할 수 있고, 본인이 이전에 짜놓은 코드를 볼 수 있는데,
이건 아직 그런 부분이 많이 미흡해서 문제풀고 공부하는 방안으로만 생각하던지, 본인이 푼 문제는 이렇게 저장해두는 것이 좋은 것 같습니다.
문제 : app.codility.com/programmers/lessons/1-iterations/
문제 설명
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문을 하나로 합칠 수도 있을 것 같네요...
'Algorithm > 코딜리티' 카테고리의 다른 글
(코딜리티) Lesson 3 : TapeEquilibrium - Python (0) 2021.01.17 (코딜리티) Lesson 3 : PermMissingElem - Python (0) 2021.01.17 (코딜리티) Lesson 3 : Frogjmp - Python (0) 2021.01.17 (코딜리티) Lesson 2 : OddOccurrencesInArray - Python (0) 2021.01.17 (코딜리티) Lesson 2 : CyclicRotation - Python (0) 2021.01.16 댓글