[Code kata] binary gap + 재귀함수 기초

do yeon kim·2022년 9월 3일
0
binary gap



문제 풀이
def solution(N):
    N = list(map(int, [i for i in format(N, 'b')]))
    a_index = [i for i in range(len(N)) if N[i] == 1]
    max = 0

    for i in range(len(a_index)-1):
        if a_index[i+1] - a_index[i] -1 > max:
            max = a_index[i+1] - a_index[i] -1
    return max

format(해당 숫자, '변환하고자하는 진수 표현식')

  • 2진수 : b
  • 8진수 : o
  • 10진수: d
  • 16진수: x

format()함수를 이용해서 원하는 진수로 변경이 가능하다.


map(함수, 시퀀스자료형)

map()함수는 시퀀스자료형에 해당하는 자료들을 하나하나 꺼내서 함수의 인자로 사용한다. map함수에 추가적인 작업이 없다면 결과값은 map객체가 되므로 반드시 list로 변환시켜서 사용해야한다.



재귀함수 기초



문제풀이
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

a = factorial(5)
print(a)

n = 0일때 끝나는 조건을 추가함으로써 무한히 재귀함수를 호출하는 것을 막는다.

5 * factorial(4)
			4 * factorial(3)
						3 * factorial(2)
									2 * factorial(1)
												1 * factorial(0)     
                                                return 1 * 1
									return 2 * 1 * 1
               			return 3 * 2 * 1 * 1
			return 4 * 3 * 2 * 1 * 1
return 5 * 4 * 3 * 2 * 1 * 1

return 120

위와 같이 계속해서 자기자신을 호출하고 마지막 조건(n=0)이 충족되면 return을 한다.

0개의 댓글