01 / 15
SESSION 06 · Part 2 개발자처럼 생각하기

알고리즘

문제를 푸는 명확한 절차 — 효율을 만드는 기술

02 / 15
🎯

이 세션에서
배우는 것

📋
알고리즘 정의
문제 해결 절차를 일상 언어로 설명할 수 있다
⏱️
시간 복잡도
Big-O 개념을 직관적으로 이해한다
🔍
정렬 · 탐색
대표 알고리즘의 이름과 특징을 안다
03 / 15
🧩

같은 문제도
푸는 방법은 다르다

10,000명 중 김철수 찾기 —
처음부터 한 명씩 확인하면 최악 10,000번,
정렬된 명단을 절반씩 좁히면14번.

문제 푸는 절차의 선택 — 이것이 알고리즘이다.

04 / 15

알고리즘은 단계의 집합이다

입력 → 명확한 절차 → 출력. 최대값을 찾는 간단한 예시를 보자.

1
입력 받기
숫자 목록을 받는다. 예: [3, 7, 2, 9, 5]
2
초기값 설정
첫 번째 숫자 3을 "현재 최대값"으로 저장한다.
3
순회 & 비교
나머지 숫자를 하나씩 보며, 현재 최대값보다 크면 교체한다. (3→7→9)
4
출력
최종 최대값 9를 반환한다. 끝.
05 / 15
🔀

정렬 알고리즘 —
더 깊게 이해하기

같은 "정렬"도 방법에 따라 속도가 극적으로 달라진다. 버블 vs 퀵 정렬을 비교해보자.

1
버블 정렬 — O(n²): 이웃끼리 비교·교환 반복
5개 숫자라면 최대 10번 비교. 100개면 9,900번. 단순하지만 느리다.
2
퀵 정렬 — O(n log n): 기준값(피벗) 선택 후 분할
피벗보다 작으면 왼쪽, 크면 오른쪽으로 나눠 재귀. 100개도 평균 665번 이내.
3
트레이드오프: 코드 복잡도 vs 속도
버블은 코드 5줄이면 되지만 느리다. 퀵은 복잡하지만 실무에서 표준이다.
4
실제 언어들의 선택
Python은 Timsort(합병+삽입 혼합), JavaScript는 V8 엔진에서 Timsort 사용. 직접 구현할 필요가 없는 이유다.
06 / 15

시간 복잡도 — Big-O

데이터가 커질 때 실행 시간이 얼마나 빨리 늘어나는지를 나타낸다. 작을수록 좋다.

🐌 선형 탐색 O(n)
순서대로 하나씩 확인
정렬 안 된 데이터에 사용
10,000개 → 최악 10,000번
구현이 쉽다
🚀 이진 탐색 O(log n)
범위를 절반씩 줄임
정렬된 데이터에만 사용 가능
10,000개 → 최악 14번
엄청나게 빠름
07 / 15
📺

유튜브 추천 —
실제로는 어떻게?

유튜브가 다음 영상을 추천할 때 내부에서 어떤 알고리즘이 작동할까?

시청 기록
수집
유사 사용자
그룹화
클릭률·시청시간
점수 계산
상위 N개
추천 노출

핵심: 알고리즘은 "당신이 좋아할 것"이 아니라 "계속 보게 할 것"을 최적화한다 — 목적 함수 설계가 중요하다.

08 / 15
🔢

대표 정렬 알고리즘

목적에 따라 다른 알고리즘을 고른다. 단순함 vs 속도 vs 안정성.

🫧
버블 정렬
O(n²) · 단순
🎯
선택 정렬
O(n²) · 직관적
🃏
삽입 정렬
O(n²) · 작은 데이터
퀵 정렬
O(n log n) · 빠름
🧩
합병 정렬
O(n log n) · 안정적
🏔️
힙 정렬
O(n log n) · 우선순위
🪣
기수 정렬
O(n) · 숫자 전용
🏆
Timsort
Python 표준
09 / 15
📱

실생활에서
이렇게 쓰여요

우리가 매일 사용하는 앱과 서비스 속에 이 개념이 녹아 있다.

📺
유튜브 추천
협업 필터링 + 딥러닝 알고리즘이 시청 패턴 분석 후 점수 기반으로 영상을 정렬·추천한다.
🗺️
카카오내비
다익스트라 알고리즘으로 최단 경로 계산. 실시간 교통 데이터를 반영해 매초 재탐색한다.
🛒
쿠팡 검색 정렬
가격·리뷰·배송비를 종합한 점수로 상품을 정렬. 같은 상품도 정렬 기준이 바뀌면 순위가 달라진다.

💡 이 개념이 없다면 수백만 개 데이터에서 원하는 정보를 찾는 것이 불가능하다

10 / 15
💡

자주 하는
오해 바로잡기

이렇게 생각하기 쉽지만, 실제로는 조금 다릅니다.

❌ 흔한 오해
  • 알고리즘 = 코드 (같은 말이다)
  • 알고리즘은 항상 최선의 답을 찾는다
  • AI = 알고리즘 (같은 개념이다)
✓ 실제로는
  • 알고리즘은 절차(레시피). 코드는 그것을 표현한 언어
  • 알고리즘은 속도 vs 정확도 트레이드오프가 항상 있다
  • AI는 알고리즘을 사용하지만, 알고리즘 자체보다 훨씬 복잡한 학습 시스템이다
11 / 15
📖

이진 탐색은 사전 찾기

어려운 개념도 익숙한 것에 빗대면 쉬워진다.

📚 사전에서 "정렬" 찾기 비유
1페이지부터 읽기
=
선형 탐색 — 최악 1,000페이지 전부
중간을 펼친다
=
이진 탐색 — "정렬"은 ㅈ, 앞쪽에 있다
앞쪽의 중간을 다시 펼친다
=
범위 절반씩 축소 — 매번 반으로 줄어든다
결과
=
1,000페이지를 단 10번만에 (2¹⁰ = 1,024)
12 / 15
🤖

이걸 알면
AI와 이렇게 대화해요

이 개념을 이해하면 Claude나 ChatGPT를 훨씬 잘 활용할 수 있다.

👤
쇼핑몰 상품을 가격순으로 정렬하고 싶어요
🤖
배열을 정렬하는 방법은 여러 가지가 있습니다. 어떤 언어를 사용하시나요?
👤
JavaScript로 상품 객체 배열을 price 속성 기준 오름차순 정렬하는 방법 알려줘. 같은 가격이면 이름 순으로 정렬해줘
🤖
products.sort((a, b) => a.price - b.price || a.name.localeCompare(b.name)) 를 사용하세요. 가격이 같으면 이름을 알파벳 순으로 정렬합니다.
13 / 15

이렇게
이해하셨나요?

맞게 이해하셨어요
알고리즘은 문제를 해결하는 단계별 절차다 — 코드가 아니어도 된다.
이렇게는 아니에요
좋은 알고리즘이면 항상 빠르다. (입력 데이터 크기와 특성에 따라 달라진다)
맞게 이해하셨어요
이진 탐색은 O(log n)으로 선형 탐색(O(n))보다 대규모 데이터에서 압도적으로 빠르다.
이렇게는 아니에요
이진 탐색은 어떤 데이터에도 쓸 수 있다. (정렬된 데이터에서만 사용 가능하다)

💪 알고리즘의 세계를 이해했다면 앱이 왜 빠르고 느린지 보이기 시작합니다!

14 / 15
📌

핵심 정리

📋
알고리즘
문제 해결의
단계별 명확한 절차
⏱️
Big-O
데이터가 커질 때
시간 증가 속도
🐌
O(n)
선형 탐색 —
데이터만큼 비례
🚀
O(log n)
이진 탐색 —
절반씩 줄이는 마법
🔢
정렬
버블·퀵·합병 —
목적에 따라 선택
🧠
효율 사고
같은 결과, 다른 비용 —
선택이 실력이다
15 / 15
🚀

다음 세션
Session 07 · 프로그래밍 개념

알고리즘이 빨라지려면 데이터를 잘 담아두는 방법이 필요하다.
배열, 스택, , 딕셔너리 — 데이터 보관함의 세계로.

💡 기억할 것: 더 좋은 알고리즘은 데이터 크기가 커질수록 차이가 벌어진다.

슬라이드 목록