더북(TheBook)

3.6 실제 예제

다음은 리스트 내 모든 항목을 출력하는 전형적인 파이썬 코드다.

things = ['apples', 'baboons', 'cribs', 'dulcimers']

for thing in things:
    print("Here's a thing: %s" % thing)

이 알고리즘의 효율성을 빅 오 표기법으로 어떻게 표현할 수 있을까?

먼저 이 코드가 알고리즘 예제임을 알아야 한다. 복잡하지 않을지라도 뭔가를 하는 코드는 모두 엄밀히 알고리즘, 즉 문제를 풀어나가는 절차다. 이 코드는 리스트의 모든 항목을 출력하고 싶다는 문제를 해결한다. 이 문제를 푸는 데 사용한 알고리즘은 print 문이 포함된 for 루프다.

문제를 더 작게 나누려면 알고리즘에 얼마나 많은 단계가 걸리는지 분석해야 한다. 이 예제에서는 알고리즘의 핵심부인 for 루프에서 4단계가 걸린다. 리스트는 원소 4개를 포함하며 한 번에 하나씩 원소를 출력한다.

하지만 이 과정은 상수가 아니다. 리스트에 원소가 10개이면 for 루프는 10단계가 걸린다. for 루프에 원소 수만큼 단계가 걸리므로 이 알고리즘의 효율성은 O(N)이라 할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.