알고리즘
코딜리티 Iterations - BinaryGap (파이썬)
인공지능 대학생
2022. 4. 26. 08:58
알고리즘 공부할 필요성을 느껴 온라인 코딩테스트를 시도해 보고 있습니다.
테스트를 진행해 본 몇가지 중에 프로그래머스, 코딜리티(codility)가 괜찮은 것 같았습니다.
둘의 차이라면,
- 프로그래머스: 한글설명, 주어진 예시만 해결해도 코드 에러발생율 적음
- 코딜리티: 영문설명, 주어진 예시외의 예외처리를 고려해야함
정도였던 것 같습니다.
개인적으로 코드 가독성에 중점을 두는 편인데
일부 인원이 작성한 숏코딩을 보면 난해해서 보기 어려운 경우도 있었습니다.
그래서 쉽게 코드를 짜서 공유하는게 좋겠다는 생각이 들었습니다.
Iterations - BinaryGap
문제링크: https://app.codility.com/programmers/lessons/1-iterations/binary_gap/
설명 (요약)
정수값 N이 입력되었을때 2진수로 변환시 1과 1사이의 0의 개수가 가장 긴 길이는? N = 529 (10000010001), return 5 (1사이의 연속된 0의 개수중 가장긴것) 1041/5; 32/0; 328/2 |
고려사항
- 모든 binary 의 시작은 1이다.
- 1은 시작점이자 종료점이다. 1이 있을때마다 0을 계산하기만 하면 된다.
코드
def solution(N):
z_max = 0
z_cnt = 0
b = format(N, 'b') # format 을 이용한 진수변환. 'b'는 binary
for bn in b:
if bn == "1":
z_max = max(z_cnt, z_max)
z_cnt = 0
else:
z_cnt += 1
return z_max
solution(1041) # return 5
Github: https://github.com/oksk1111/algorithm_python/blob/main/codility_binarygap.ipynb
GitHub - oksk1111/algorithm_python
Contribute to oksk1111/algorithm_python development by creating an account on GitHub.
github.com
결과
반응형