1장 들어가며
1.1 경진 프로그래밍이란 무엇인가?
1.2 이 책에 대하여
1.3 CSES 문제 셋
1.4 그 밖의 참고자료
2장 프로그래밍 기법
2.1 언어적 특성
2.2 재귀적 알고리즘
2.3 비트 연산
3장 효율성
3.1 시간 복잡도
3.2 알고리즘 설계 예제
3.3 코드 최적화
4장 정렬과 탐색
4.1 정렬 알고리즘
4.2 정렬을 이용한 문제 풀이
4.3 이진 탐색
5장 자료 구조
5.1 동적 배열
5.2 집합 자료 구조
5.3 실험
6장 동적 계획법
6.1 기본 개념
6.2 다른 예제
7장 그래프 알고리즘
7.1 그래프 기본
7.2 그래프 순회
7.3 최단 경로
7.4 사이클 없는 방향 그래프
7.5 후속 노드 그래프
7.6 최소 신장 트리
8장 알고리즘 설계 기법
8.1 비트 병렬 알고리즘
8.2 분할 상환 분석
8.3 최솟값 구하기
9장 구간 질의
9.1 정적 배열에 대한 질의
9.2 트리형 자료 구조
10장 트리 알고리즘
10.1 기본 기술
10.2 트리 질의
10.3 고급 기술
11장 수학
11.1 정수론
11.2 조합론
11.3 행렬
11.4 확률
11.5 게임 이론
11.6 푸리에 변환
12장 고급 그래프 알고리즘
12.1 그래프의 강결합성
12.2 완전 경로
12.3 최대 유량
12.4 깊이 우선 탐색 트리
12.5 최소 비용 유량
13장 기하
13.1 기하 기법
13.2 스윕 라인 알고리즘
14장 문자열 알고리즘
14.1 기본 주제
14.2 문자열 해싱
14.3 Z 알고리즘
14.4 접미사 배열
14.5 문자열 오토마타
15장 고난도 주제
15.1 제곱근 기법
15.2 구간 트리 다시 살펴보기
15.3 트립
15.4 동적 계획법 최적화
15.5 퇴각 검색 기법
15.6 그 밖의 기법
부록 A 수학적 배경 이론
이 책의 내용
- 동적 계획법을 비롯한 기본 알고리즘 설계 기술을 소개하고 다양한 그래프 알고리즘에 대해 알아본다.
- IOI 출제 요강에 제시된 주제를 포괄함과 더불어 최대 유량, 님 이론, 접미사 구조 등의 고급 주제를 다룬다.
- 트리 알고리즘을 살펴보고 경진 프로그래밍과 관련된 수학 주제를 살펴본다.
- C++ 프로그래밍 언어의 특징을 살펴보고 대용량의 데이터를 빠르게 처리하는 효율적인 알고리즘에 대해 설명한다.
- 정렬 알고리즘과 이진 탐색에 대해 논의하고, C++ 표준 라이브러리의 자료 구조를 살펴본다.
- 비트 병렬 알고리즘과 분할 상환 분석과 같은 고급 알고리즘 설계 기법을 다루고, 구간 질의를 빠르게 처리하는 방법을 제시한다.
- 제곱근 기법과 동적 계획법 최적화 등의 고난도 주제를 살펴본다