Ch.7 코드가 돌아가는 원리
느린 코드 vs 빠른 코드 — Big O 핵심
같은 기능인데 하나는 0.01초, 하나는 10분?
AI에게 검색 기능을 만들어달라고 했더니 두 가지 버전을 줬습니다. 하나는 데이터 1만 건에서 0.001초, 다른 하나는 10초가 걸립니다. 코드를 봐도 둘 다 '작동'은 합니다.
코드가 작동하는 것과 효율적인 것은 완전히 다릅니다. AI가 비효율적 코드를 줘도 모르면 그대로 쓰게 됩니다.
알고리즘과 Big O를 이해하면 AI가 만든 코드의 성능을 판단하고 더 나은 방법을 요청할 수 있습니다.
핵심 내용
알고리즘 = 문제를 해결하는 방법. 같은 문제에도 빠른 방법과 느린 방법이 있습니다.
비유: 전화번호부에서 '김철수'를 찾는 두 가지 방법이 있습니다. 방법 A — 1페이지부터 한 장씩 넘기기. 최악의 경우 전부 넘겨야 합니다. 방법 B — 중간을 펴서 'ㄱ' 찾고, 다시 중간을 펴서 '김' 찾기. 매번 절반씩 줄어듭니다.
Big O = 데이터가 커질 때 속도가 어떻게 변하는지 표현하는 방법
실감 비교: 데이터 10,000개일 때 O(1) = 1번 | O(log n) = 14번 | O(n) = 10,000번 | O(n²) = 1억 번 같은 데이터인데 방법에 따라 1번과 1억 번의 차이가 납니다.
바이브코더가 이걸 왜 알아야 하나? AI가 for문 안에 for문을 넣는 코드(O(n²))를 만들 때가 있습니다. 데이터가 적으면 괜찮지만, 많아지면 치명적입니다. "이 코드의 시간복잡도가 어떻게 되는지 확인해줘"라고 물어볼 수 있어야 합니다.
팁: AI에게 "이 코드를 더 효율적으로 만들 수 있어?"라고 물어보면 최적화 제안을 받을 수 있습니다. 'Set이나 Map을 써서 O(n)으로 바꿔줘'라고 구체적으로 요청하면 더 좋습니다.
해시맵(딕셔너리)으로 값을 찾는 시간복잡도는?
O(n)은 데이터 양에 관계없이 같은 시간이 걸린다
알고리즘 감각 장착 완료
핵심 용어
O(1) 상수
데이터 양에 관계없이 즉시 — 사물함 번호로 바로 찾기
O(log n) 로그
절반씩 줄여가며 찾기 — 전화번호부 반씩 넘기기
O(n) 선형
처음부터 하나씩 — 1페이지부터 순서대로 넘기기
O(n²) 제곱
모든 쌍 비교 — 30명 학생 전원이 서로 악수
핵심 정리
- 1알고리즘 = 문제 해결 방법, Big O = 효율성 측정 도구
- 2O(1) 상수 < O(log n) 로그 < O(n) 선형 < O(n²) 제곱
- 3AI가 중첩 for문을 쓰면 → O(n²) → Map/Set으로 O(n) 요청
퀴즈와 인터랙션으로 더 깊이 학습하세요
play_circle인터랙티브 레슨 시작