리스트와 반복문을 먼저 익힌 뒤 알고리즘 흐름을 살펴보세요.
알고리즘의 출발점: 코드가 얼마나 일할까요?
알고리즘은 문제를 해결하는 순서입니다. 같은 답을 내는 코드도 필요한 작업량은 다를 수 있습니다. 입력 크기를 n이라고 부릅니다. 리스트라면 원소 개수가 n입니다.
Big O 읽기: 입력이 커질 때 작업량이 늘어나는 방식
Big O는 몇 초 걸리는지가 아니라, 입력이 커질 때 작업량의 증가를 위에서 제한하는 표기입니다. O(n)은 선형으로, O(n²)은 제곱으로 늘어납니다. 보통 최악의 경우를 가능한 한 딱 맞는 상한으로 표현하지만, Big O 자체가 ‘최악의 경우’라는 뜻은 아닙니다.
상수 배수와 영향이 작은 항은 생략합니다. 3n + 10은 O(n)입니다. 같은 O(n) 코드끼리도 실제 속도는 다릅니다. 시간 복잡도는 작업량, 공간 복잡도는 추가 메모리 사용량을 설명합니다. 메모리를 더 쓰는 대신 빨라지기도 합니다.
| Big O | 대표적인 예 | n | 2n |
|---|
같은 결과, 다른 작업량
같은 일을 하는 두 Python 코드를 고르고, 위에서 선택한 입력 크기로 비교해 보세요.
서버에서 각 함수를 한 번 예열하고, 실행 순서를 번갈아 바꾸며 25회씩 7묶음을 측정합니다. 1회당 시간의 중앙값과 묶음 평균의 범위를 보여줍니다. 입력 준비·출력·통신 시간은 제외합니다. 서버 부하와 Python 버전에 따라 달라지므로 배율을 보편적인 속도 차이로 해석하지 마세요.
n을 10배로 바꿔 다시 비교해 보세요. 시간도 예상한 비율로 늘어날까요? 작은 입력에서는 Big O보다 함수 호출 같은 고정 비용의 영향이 클 수 있습니다.
개념 확인과 코드 문제를 기초·중급·심화 순서로 풀 수 있습니다.