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