topic난이도 · 약 20

느린 코드 vs 빠른 코드 — Big O 핵심

O(1), O(n), O(n²) — 데이터가 늘어날 때 코드가 얼마나 느려지는지 측정하는 척도.

#Big O#시간복잡도#성능#해시맵#알고리즘
왜 배우는가

AI가 만든 코드가 10건일 때는 잘 돌아가는데 10만 건이 되면 멈춘다면? Big O를 직감적으로 이해하면 Claude Code에게 '이거 너무 느린 방식 아니야?'라고 물어볼 수 있다.

Big O는 데이터 양이 늘어날 때 실행 시간이 얼마나 증가하는지를 나타내는 표기법입니다. 커피숍 비유로 설명하겠습니다. - O(1) — 손님이 몇 명이든 주문 접수는 1초. 데이터 양과 무관하게 항상 같은 시간. - O(n) — 손님 10명이면 10초, 100명이면 100초. 데이터에 비례해서 느려짐. - O(n²) — 손님 10명이면 100초, 100명이면 10,000초. 데이터가 늘면 폭발적으로 느려짐.

성능 지형 — 데이터 규모가 커질수록 O(n²) 곡선은 가파르게 치솟는다
Big O이름데이터 1,000건데이터 100만 건비유
O(1)상수 시간1회 연산1회 연산사전에서 색인으로 바로 찾기
O(n)선형 시간1,000회1,000,000회책을 처음부터 한 장씩 넘기기
O(n²)이차 시간1,000,000회1,000,000,000,000회모든 사람이 모든 사람과 악수

같은 '찾기' 작업이라도 자료구조에 따라 O(1) vs O(n)으로 갈린다. 이중 반복문은 O(n²)의 위험 신호.

배열 검색 vs 해시맵 — 가장 중요한 실전 차이입니다. 리스트(배열)에서 값을 찾으면 처음부터 하나씩 확인해야 합니다 → O(n). 딕셔너리(해시맵)에서 키로 찾으면 바로 접근합니다 → O(1). 데이터가 100건일 때는 차이를 못 느끼지만, 100만 건이 되면 리스트는 100만 번 비교하고 해시맵은 1번에 끝납니다.

바이브코더가 성능을 신경써야 하는 이유 Claude Code가 이중 for문으로 코드를 짰다면, 데이터가 적을 때는 문제없지만 서비스가 성장하면 서버가 멈출 수 있습니다. 실전 팁: Claude Code에게 이렇게 물어보세요. - "이 코드의 시간복잡도가 어떻게 돼?" - "O(n²)인데 O(n)으로 줄일 수 있어?" - "이 부분에 해시맵을 쓰면 더 빨라지지 않을까?" Big O를 '정확하게 계산'할 필요는 없습니다. 느린 패턴을 알아보는 직감만 있으면 됩니다.

실기 드릴 2문항
edit실기 드릴 · 단답형

딕셔너리(해시맵)에서 키로 값을 조회하는 시간복잡도는?

check_circle실기 드릴 · OX

이중 for문의 시간복잡도는 일반적으로 O(n)이다.