알고리즘10 알고리즘 - 백트래킹, N-Queens 백트래킹 (N-Queens, 가지치기, DFS)분할 정복·DP·그리디가 모두 효율적인 알고리즘 패러다임이었다면, 백트래킹(Backtracking)은 본질적으로 모든 가능한 답을 시도해 보는 완전 탐색의 정교한 변형이다. "일단 한 길로 가 보고, 막히면 되돌아 와 다른 길을 시도하는" 사고방식이며, N-Queens·미로 찾기·스도쿠·조합 생성처럼 답의 후보가 트리 구조로 자라는 문제에 강력하다. 핵심 기교는 가지치기(Pruning) — 명백히 답이 될 수 없는 경로를 미리 잘라 내는 일이며, 가지치기 없는 백트래킹은 단순 완전 탐색일 뿐이다. 본 글은 백트래킹의 정의·DFS와의 관계·N-Queens 고전 풀이·가지치기 전략을 세심하게 정리한다(출처: CLRS — Introduction to Algorit.. 2026. 5. 19. 알고리즘 - 그리디 알고리즘 그리디 (탐욕, 활동선택, 분수배낭)DP가 모든 가능한 부분 문제를 풀어 비교한 뒤 최적해를 만든다면, 그리디(Greedy, 탐욕) 알고리즘은 매 순간 가장 좋아 보이는 선택을 즉시 결정하고 뒤를 돌아보지 않는다. 단순해 보이지만 이 단순함이 가장 큰 강점이자 함정이다. 어떤 문제는 그리디로 항상 최적이 보장되지만, 어떤 문제는 절대 최적이 보장되지 않는다. 본 글은 그리디의 정의·두 가지 조건·대표 응용·DP와의 차이를 세심하게 정리한다(출처: CLRS — Introduction to Algorithms, 16장). 제가 학교 알고리즘 과제에서 동전 거스름돈을 그리디로 풀어 한국 동전(500·100·50·10)에서는 항상 최적이 나오다가, 임의 동전(예: 4·3·1)에서는 최적이 깨지는 모습을 본 후로.. 2026. 5. 19. 알고리즘 - 동적 계획법 DP 동적 계획법 (DP, 메모이제이션, 점화식)알고리즘을 배우다 가장 큰 학습 벽으로 자주 꼽히는 영역이 동적 계획법(DP, Dynamic Programming)이다. 분할 정복이 큰 문제를 작은 문제로 쪼개되 작은 문제들이 서로 독립적인 경우에 잘 동작했다면, DP는 작은 문제들이 서로 겹치는 경우를 다룬다. 같은 부분 문제를 한 번만 풀고 그 답을 저장(메모)해 두면 다음에 만났을 때 즉시 꺼낼 수 있고, 이 단순한 발상의 전환이 지수 시간 알고리즘을 다항 시간으로 끌어내린다. 본 글은 DP의 두 가지 조건, 메모이제이션과 타뷸레이션의 차이, 그리고 고전 응용을 세심하게 정리한다(출처: CLRS — Introduction to Algorithms, 15장). 제가 학교 알고리즘 시간에 피보나치를 단순 재.. 2026. 5. 19. 알고리즘 - 분할 정복과 시간 복잡도 분할 정복 (재귀, 시간복잡도, 점화식)알고리즘 시리즈의 첫 글은 분할 정복(Divide and Conquer)이다. 이름이 거창해 보이지만 발상은 단순하다. 큰 문제를 같은 형태의 작은 문제 두세 개로 쪼개고, 작은 문제들의 답을 합쳐 원래 문제의 답을 만드는 전략이다. 이 단순한 아이디어 위에 병합 정렬·퀵 정렬·이진 탐색·고속 푸리에 변환·행렬 곱셈 같은 거의 모든 고급 알고리즘이 서 있으며, 같은 사고 틀이 그래픽스의 KD-Tree·DB의 B-Tree·MapReduce의 분산 처리까지 확장된다. 본 글은 분할 정복의 정의·시간복잡도 분석·마스터 정리·실전 예시를 세심하게 정리한다(출처: CLRS — Introduction to Algorithms). 제가 학교 알고리즘 수업에서 처음 같은 정렬 문.. 2026. 5. 19. 이전 1 2 다음