더북(TheBook)

3. 다음 함수의 시간 복잡도를 빅 오 표기법으로 나타내자. 이 함수는 주어진 배열의 모든 숫자 쌍의 최대곱(the greatest product)을 찾는다.

def greatestProduct(array): 
    greatestProductSoFar = array[0] * array[1]

    for i, iVal in enumerate(array): 
        for j, jVal in enumerate(array):
            if i != j and iVal * jVal > greatestProductSoFar: 
                greatestProductSoFar = iVal * jVal

    return greatestProductSoFar

4. 다음 함수는 배열에서 가장 큰 수 하나를 찾으며 효율성이 O(N2)이다. 더 빠른 O(N)이 되도록 함수를 다시 작성하자.

def greatestNumber(array): 
    for i in array:
        # 우선은 i가 가장 크다고 가정하자.
        isIValTheGreatest = True

        for j in array:
            # i보다 큰 값을 찾으면, i는 가장 큰 수가 아니다.
            if j > i:
                isIValTheGreatest = False

        # 나머지 수를 모두 확인했는데도 i가 가장 크면, i가 가장 큰 수다.
        if isIValTheGreatest:
            return i
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.