https://app.codility.com/programmers/lessons/1-iterations/
곧 있을 코테가 코딜리티에서 진행된다고 하여 플랫폼에 익숙해 지기 위해 코딜리티에서 문제를 풀기 시작했다.
영어로 되어 있는 사이트라 문제도 영어라서 차근차근 읽어보고 제대로 코드를 짜는 것이 가장 중요할 것 같았다.
lesson 1부터 코테 전까지 최대한 많이 풀어보려고 노력해야할 것 같다.
코딜리티의 lesson 1 문제는 아래와 같다.
10진수를 2진수로 바꾼 후 binary gap이라는 것을 구하여 길이가 가장 긴 binary gap의 길이를 출력하는 문제이다.
def solution(N):
answer = ''
bin_N = bin(N)
bin_N = bin_N[2:]
idx_ls = []
for idx, i in enumerate(bin_N) :
if i == '1' :
idx_ls.append(idx)
if len(idx_ls) < 2 :
return 0
else :
grap = []
for i in range(len(idx_ls)-1) :
grap.append(idx_ls[i+1] - idx_ls[i] -1)
answer = max(grap)
return answer
먼저 십진수를 이진수로 바꿔서 숫자 '1'이 있을 때 인덱스를 뽑도록 enumerate함수를 사용하여 반복했다.
이진수로 바꿨을 때 '1'이 한 개만 있으면 binary gap이 없기 때문에 뽑아낸 인덱스 리스트의 길이가 2보다 작으면 바로 0을 반환하도록 했다.
'1'이 2개 이상이면 다시 for문으로 반복하며 (idx_ls[i+1] - idx_ls[i] -1)로 0의 개수를 구했다.
1이 연속으로 있어도 결과는 0이 나오기 때문에 문제 없이 코드가 실행되었다.
코딜리티에서 문제를 풀어보니 영어로 되어있다는 것만 빼면 프로그래머스랑 비슷하지만
다른 사람의 코드를 볼 수 없다는 것과 내가 푼 코드를 다시 볼 수 없다는 것이 조금 불편했다.
나는 코테 연습을 하면서 IDE로 풀고 있었는데 IDE 사용 못하게 하는 경우가 많아서 사이트에서 바로 푸는 연습을 해야할 것 같다 ㅠㅠ...