반응형
코딜리티는 네이버의 코딩테스트 플랫폼으로 알려져 있다. (언제 바뀔지 모름 주의)
개인적으로 아주 깔끔한 UI에 친절한 문제 설명이 주어지는 플랫폼인것 같다.
하지만 null input 이나 값이 없는 빈 리스트만 입력에 추가되어 있는 등
주의할 예외처리들이 다수 존재하는 실무형 문제가 많다.
문제의 대부분이 영어로 출제되는 만큼 코딩만 잘 해서는 문제를 바로 풀기가 힘들다.
//풀이
Lesson 1 요약
어떤 정수 N이 주어지면 이 N을 2진수로 바꿨을때 발생하는 binary_gap의 최대값을 구해라.
이때 binary_gap은 1과 1로 닫힌 공간 안에 있는 0의 갯수이다.
즉 10001 의 경우 3이고 1000 의 경우 없다.
없는 경우는 0을 출력해야한다.
언뜻 생각하면 이 숫자를 모두 이진화하여 가지고 있어야 할 것 같지만
이진화 과정을 생각해보면 몇 가지 조건을 통해서 2진화 과정 중간중간에
0의 개수를 카운트할 수 있는 것을 볼 수 있다.
def solution(N):
# write your code in Python 3.6
div, gap = N, 0
binary_gap = []
while div > 1:
div, mod = divmod(div, 2)
if mod:
binary_gap.append(gap)
gap = 0
else:
gap += 1
binary_gap.append(gap)
binary_gap[0] = 0
return max(binary_gap)
//추신
나는 리스트에 담아서 그 중 max를 취하는 방식을 사용했지만
지금 글을 쓰면서 생각해보니 그냥 두 수의 비교만으로도 가능할 것 같다.
그게 더 간단하고 좋은 풀이일 것으로 생각되어 돌려보았으나
짝수에서 문제가 발생했다.
짝수의 경우 이진화 했을때 처음에 1로 시작하지 않는 수 인데
이 수의 경우 '닫히지 않은' 구간의 0 수를 그대로 내보내게 되었고
이것을 처리해 주는 것이 나에게는 더 낭비처럼 느껴졌다.
반응형
'Coding Test > Codility' 카테고리의 다른 글
[ Codility 코딜리티 ] Lesson 3 TapeEquilibrium Python 파이썬 풀이 (0) | 2021.04.17 |
---|---|
[ Codility 코딜리티 ] Lesson 3 PermMissingElem Python 파이썬 풀이 (0) | 2021.04.17 |
[ Codility 코딜리티 ] Lesson 3 FrogJmp Python파이썬 풀이 (0) | 2021.04.17 |
[ Codility 코딜리티 ] # Lesson 2 OddOccurrencesInArray python 풀이 (0) | 2021.04.11 |
[ Codility 코딜리티 ] # Lesson 2 CyclicRotation Python 풀이 (2) | 2021.04.11 |
댓글