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 · 프로그래밍 개념

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

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

슬라이드 목록