프로그래밍 기초편 · 복잡도: 이 코드, 쓸 만한가?
Big-O: 코드가 얼마나 걸릴지 한눈에
자매편에서 「자료구조 = 정리하는 방식」을 다뤘다면, 이번 장은 나머지 절반입니다: 알고리즘 = 일을 처리하는 루틴. 루틴이 좋은지 나쁜지 평가할 때 프로그래머가 쓰는 공통 자, 그게 Big-O예요. 수학 기호에 겁먹지 마세요—답이 필요한 질문은 하나뿐입니다: 데이터가 늘어날 때, 코드는 얼마나 느려질까? 오늘 세 개의 인터랙티브로 이 자를 머릿속에 넣어요.
인터랙티브 1 · 네 곡선이 갈라지다
흔한 네 가지 「루틴」의 소요 시간 곡선: O(1) 회색(데이터가 얼마든 한 번에 끝), O(log n) 초록(매번 절반을 자름), O(n) 파랑(하나씩 훑음), O(n²) 빨강(모두가 모두와 비교). 슬라이더로 데이터량을 10에서 10만까지 끌어 보세요. 오른쪽은 「초당 1억 번 연산」으로 환산한 실제 소요 시간입니다. 앞쪽을 보세요: 네 선이 한데 뭉쳐 있어요—데이터가 작을 땐 어떤 알고리즘도 빨라 보이고, 그게 바로 데모가 속이는 이유예요.
먼저 맨 왼쪽으로 끌어 두고 천천히 오른쪽으로. n = 100 이하에선 네 선이 바닥에 붙어 있어요—그게 「데모 단계에선 전부 정상」입니다. 1만을 넘으면 빨간 선이 이륙하고, 10만에 이르면 O(n²)는 이미 100초가 필요한데 초록 선은 거의 0이에요.
인터랙티브 2 · 데이터가 10배가 되면
더 직접적으로 물어볼게요: 상사가 「사용자가 10배가 될 거야」라고 하면, 네 루틴은 각각 얼마나 느려질까요? 「×10」 버튼을 누르고, 세 번 연타하며 격차가 눈덩이처럼 커지는지 보세요.
현재 데이터량 1,000개
규칙을 먼저 기억하세요: 데이터 ×10일 때 O(1)은 그대로, O(log n)은 +조금, O(n)은 따라 ×10, O(n²)는 바로 ×100. 버튼을 몇 번 눌러 확인해 보세요.
인터랙티브 3 · 이 코드의 복잡도는
자를 손에 넣었으니 검증해 봅시다. 의사코드 세 단락, 각각 복잡도를 고르세요. 비결: 한 줄씩 다 읽지 말고, 「데이터가 늘면 일이 얼마나 늘어나나」만 보세요.
이 자가 왜 쓸모 있을까요? 나중에 AI가 쓴 코드를 검수할 때 한 줄씩 다 이해할 필요 없어요. 한 마디만 물으면 됩니다: 「이 구간의 복잡도는? 데이터 10만 개에서도 돌아갈까?」 AI가 솔직히 답해요. 그리고 「출시 후 점점 버벅거리는」 사고 대부분은 구석에 숨은 O(n²)예요. 다음 레슨에서는 LLM 안에서 가장 유명한 그 O(n²)—어텐션 메커니즘을 봅니다.
이 강의가 전하고 싶은 것
- Big-O는 추세만 본다: 한 번이 얼마나 빠른지는 관심 없고, 「데이터가 늘 때 시간이 어떻게 커지나」만 봅니다
- 상수는 대수롭지 않고, 추세가 치명적: 2배 느린 건 참을 수 있지만, n²로 커지면 사형 선고예요
- 데이터가 작으면 안 보여요: 데모 단계에선 네 곡선이 한데 뭉치고, 데이터가 커져야 격차가 폭발합니다
- n²가 대부분 버벅임 사고의 원흉: 코드 검수할 때 먼저 중첩 루프를 찾으세요