이 상품은 구매 후 지원 기기에서 예스24 eBook앱 설치 후 바로 이용 가능한 상품입니다.
|
서문이 책을 보는 방법이 책의 구성이 책의 구성 요소학습 로드맵01 들어가며1.1. 이 책에서 다루는 알고리즘1.2. 알고리즘의 성능 평가 1.2.1 시간 복잡도 1.2.2 점근적 표기: 빅-오 표기법 1.2.3 점근적 표기의 다른 방법들 02 정렬 알고리즘2.1. 정렬의 개념 2.2. 정렬 알고리즘의 종류 2.3. 선택 정렬 2.3.1 선택 정렬의 과정 2.3.2 선택 정렬의 구현 2.3.3 선택 정렬의 특성 2.4. 퀵 정렬 2.4.1 퀵 정렬의 과정 2.4.2 퀵 정렬의 구현 2.4.3 퀵 정렬의 특성 2.5. 병합 정렬 2.5.1 병합 정렬의 과정 2.5.2 병합 정렬의 구현 2.5.3 병합 정렬의 특성 2.6. 연습 문제 03 해시3.1. 해시의 개념 3.1.1 해시 함수 3.1.2 해시 검색 3.1.3 해시 검색의 과정 3.2. 해시 함수 3.2.1 나머지(제산: Division) 함수3.2.2 접기(접지: Folding) 함수 3.2.3 중간 제곱 함수(Mid-square function) 3.2.4 숫자 분석 기반의 해시 함수 3.3. 첫 번째 충돌 해결 방법: 개방 주소법 3.3.1 선형 조사법 3.3.2 제곱 조사법 3.3.3 이중 해시 3.4. 해시 테이블의 추상 자료형 3.5. 해시 검색의 첫 번째 구현: 개방 주소법 사용 3.5.1 해시 테이블의 생성 3.5.2 자료 추가 3.5.3 자료 검색3.5.4 자료 제거 3.5.5 기타 3.6. 두 번째 충돌 해결 방법: 체이닝 3.7. 해시 테이블의 두 번째 구현: 체이닝 사용 3.7.1 해시 테이블의 생성 3.7.2 자료 추가 3.7.3 자료 검색 3.7.4 자료 제거 3.8. 해시 검색의 성능 분석 3.8.1 키 값 밀도 3.8.2 적재 밀도 3.9. 연습 문제 04 균형 검색 트리4.1. 이진 검색 트리 4.2. 다원 검색 트리 4.3. B-트리 4.4. B-트리의 연산 4.4.1 B-트리에서의 자료 추가 4.4.2 B-트리에서의 자료 제거 4.4.3 예제: 자료 추가 및 제거 4.5. B-트리의 구현 4.5.1 B-트리 생성 4.5.2 검색 연산 4.5.3 자료 추가 4.5.4 자료 제거 4.5.5 기타 4.6. 간단한 형태의 B-트리 4.6.1 2-3 트리4.6.2 2-3-4 트리 4.7. B-트리의 변형 4.7.1 B+트리 4.7.2 B*트리 4.8. 연습 문제 05 그래프5.1. 그래프 자료구조 5.2. 최단 경로 구하기 5.2.1. 하나의 시작점에서 구하기: Dijkstra(다이크스트라) 알고리즘 5.2.2 모든 시작점에서 경로 구하기: Floyd(플로이드) 알고리즘 5.2.3 도달 가능성 구하기 5.3. 최소 비용 신장 트리 5.3.1 신장 트리란? 5.3.2 최소 비용 신장 트리란? 5.3.3 크루스칼(Kruskal) 알고리즘 5.3.4 프림(Prim) 알고리즘 5.4 연습 문제06 탐욕 알고리즘6.1. 탐욕 알고리즘의 개념 6.2. 동전 거스름돈 문제 6.2.1 탐욕 알고리즘의 적용 6.2.2 탐욕 알고리즘의 구현 6.3. 부분 배낭 문제 6.3.1 탐욕 알고리즘의 적용 6.3.2 탐욕 알고리즘의 구현 6.4. 허프만 코딩 6.4.1 탐욕 알고리즘의 적용 6.4.2 탐욕 알고리즘의 구현 6.5. 연습 문제 07 분할 정복 알고리즘7.1. 이진 검색을 통해 알아보는 분할 정복 알고리즘 7.2. 팩토리얼 문제 7.3. 가장 가까운 두 점 찾기 문제 7.3.1 분할 정복 알고리즘의 적용 7.3.2 분할 정복 알고리즘의 구현 7.4. 연쇄 행렬 곱셈 문제 7.4.1 연쇄 행렬 곱셈 문제란? 7.4.2 분할 정복 알고리즘의 적용: 행렬이 4개인 경우 7.4.3 일반적인 경우에 분할 정복 알고리즘의 적용 7.4.4 분할 정복 알고리즘의 구현 7.5 연습 문제08 동적 계획법8.1. 피보나치 수열로 알아보는 동적 계획법 8.2. 동전 거스름돈 문제8.2.1 분할 정복법의 적용과 구현 8.2.2 동적 계획법의 적용 8.2.3 동적 계획법의 구현 8.3. 0-1 배낭 문제 8.3.1 분할 정복법의 적용과 구현 8.3.2 동적 계획법의 적용 8.3.3 동적 계획법의 구현 8.4. 편집 거리 문제 8.4.1 분할 정복법의 적용과 구현 8.4.2 동적 계획법의 적용 8.4.3 동적 계획법의 구현 8.5 연습 문제09 백트래킹 알고리즘9.1. 외판원 문제 9.1.1 백트래킹의 적용 9.1.2 백트래킹의 구현 9.2. 8퀸 문제 9.2.1 백트래킹의 적용 9.2.2 백트래킹의 구현 9.3. 미로 문제 9.3.1 백트래킹의 적용9.3.2 백트래킹의 구현 9.4 연습 문제연습문제 정답찾아보기
|
|
이 책은 C 언어를 기본 구현 언어로 사용합니다. 따라서 C 언어에 대한 기초 문법과 개발 도구인 Visual Studio 혹은 XCode의 간단한 사용 방법을 익힌 분들이라면 충분히 이 책을 시작할 수 있습니다.또한, 기본적인 자료구조(리스트, 스택, 큐 등)를 어느 정도 알고 있다고 가정합니다. 그래서 알고리즘의 설명에 꼭 필요한 사항이 아닌 이상 자료구조 자체에 대한 설명은 최소화하였습니다.#. 누구를 위한 책인가요?- 소프트웨어 개발에 관심 있거나 배우고 있는 고등학생, 대학생, 대학원생- 개발 현장에서 일하고 있으며 알고리즘에 대해 알고 싶어하는 개발자- IT 기업의 면접을 준비하고 있는 개발자#. 이 책의 구성1장 들어가며알고리즘을 시작하기 전에 기본 지식을 배우는 부분입니다. 알고리즘의 개념 및 이 책에서 다루는 알고리즘의 종류와 성능 평가 방법 등을 다룹니다.2장 정렬 알고리즘알고리즘 중에서 가장 기본이 되는 정렬 알고리즘을 배웁니다. 선택 정렬을 먼저 배우고 이보다 효율적인 퀵 정렬과 병합 정렬을 소개합니다.3-4장 검색 관련 알고리즘3장과 4장에 걸쳐 찾고자 하는 자료를 빨리 검색하는 문제에 대한 알고리즘을 배웁니다. 3장에서는 계산을 통해서 자료를 찾는 해시 검색 알고리즘을, 4장에서는 검색 키 값을 비교하여 자료를 찾는 균형 검색 트리를 배웁니다. 이 책에서는 균형 검색 트리 중에서도 B-트리에 대해서 살펴보겠습니다.5장 그래프 관련 알고리즘5장에서는 그래프 자료구조를 활용한 알고리즘들을 살펴봅니다. 이러한 알고리즘 중에서 가장 대표적인 최단 경로를 구하는 알고리즘과 최소 신장 트리를 구하는 알고리즘을 배웁니다. 최단 경로 문제를 크게 시작점이 하나인 경우와 여러 개인 경우로 나눠 각 경우에 대한 대표적인 알고리즘으로 다이크스트라 알고리즘, 플로이드 알고리즘을 다룹니다. 아울러, 최소 신장 트리를 구하는 알고리즘으로는 크루스칼 알고리즘과 프림 알고리즘을 살펴보겠습니다.6장 탐욕 알고리즘6장에서는 문제의 각 단계에서 최선의 선택을 하여 문제를 해결하는 비교적 단순한 탐욕 알고리즘을 배웁니다. 또한, 동전 거스름돈 문제, 부분 배낭 문제, 압축 문제에 탐욕 알고리즘을 적용하여 실제 알고리즘으로 문제를 해결하는 방식을 살펴보겠습니다.7장 분할 정복 알고리즘7장에서는 하나의 큰 문제를 여러 개의 하위 문제로 쪼개서 차례로 해결하는 분할 정복 알고리즘을 배웁니다. 또한, 가장 가까운 두 점 찾기 문제와 연쇄 곱셈 행렬 문제에 분할 정복 알고리즘을 적용하여 실제 알고리즘으로 문제를 해결하는 방식을 살펴보겠습니다. 8장 동적 계획법8장에서는 분할 정복 알고리즘과 같이 큰 문제를 작게 쪼개서 기존에 구한 값을 재활용하는 동적 계획법을 배웁니다. 또한, 동전 거스름돈 문제, 0-1 배낭 문제, 편집 거리 문제에 동적 계획법을 적용하여 실제 알고리즘으로 문제를 해결하는 방식을 살펴보겠습니다.9장 백트래킹 알고리즘9장에서는 문제의 답을 찾을 때까지 모든 가능성을 시도해 보는 백트래킹 알고리즘을 배웁니다. 또한, 외판원 문제, 8퀸 문제, 미로 문제에 백트래킹 알고리즘을 적용하여 실제 알고리즘으로 문제를 해결하는 방식을 살펴보겠습니다.
|