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
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.