장바구니 담기 close

장바구니에 상품을 담았습니다.

코드와 그림으로 마스터하는 알고리즘

코드와 그림으로 마스터하는 알고리즘

  • 이상진
  • |
  • 남가람북스
  • |
  • 2016-11-02 출간
  • |
  • 508페이지
  • |
  • 183 X 233 X 24 mm /923g
  • |
  • ISBN 9791195484560
판매가

28,000원

즉시할인가

25,200

배송비

2,300원

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
25,200

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평

이 책은 알고리즘을 통해 여러분의 개발 실력을 향상시키는 최선의 해결책을 제시합니다. 이 책은 기능을 구현하는 방법에 대한 질문에 알고리즘이라는 해답을 제시합니다.

알고리즘이 여러분의 고민에 명쾌한 답이 될 수 있도록 다음 2가지에 집중합니다.

#. 분명한 개념 전달

알고리즘을 완벽히 이해하는 것은 물론 쉽지 않습니다. 알고리즘은 파헤치면 파헤칠수록 깊고 넓은 분야이기 때문입니다. 알고리즘의 이러한 특성으로 많은 분이 알고리즘의 핵심이 아닌 주변부 내용 때문에 알고리즘이 이해하기 어렵다고 이야기합니다.
따라서 불필요한 부분을 모두 제외하고 알고리즘의 가장 중심이 되는 개념만을 정확하게 전달하기 위해 노력했습니다. 또한, 그림으로 다소 어렵게 느껴질 수 있는 개념 설명을 시각화하였으며 설명을 간결화하여 이해도를 높였습니다.

#. 알고리즘의 실제 구현
알고리즘의 개념을 이해했더라도 실제 소스 코드로 구현하지 못한다면 알고리즘을 제대로 이해했다고 보기 어렵습니다. 소스로 구현되지 못한 알고리즘은 실제 동작이 불가능하기 때문입니다.
이 책은 각 알고리즘의 예제 소스를 제시할 뿐 아니라 알고리즘의 개념이 실제 소스로 어떻게 구현되었는지 글과 그림을 통해 설명하였습니다. 따라서 독자 여러분이 책의 설명을 따라서 직접 소스를 입력하고 실행하는 과정 가운데 알고리즘이 동작하는 개념을 보다 빨리 이해할 수 있을 것입니다.
지면 관계상 생략된 일부 소스는 남가람북스 홈페이지에서 다운로드 받을 수 있습니다.

이 책의 대상 독자는 알고리즘을 프로그램 개발에 사용하려는 분들입니다. 이분들은 C 언어와 같은 프로그래밍 언어와 자료구조를 어느 정도 알고 있는 학생일 수 있습니다.
혹은 개발자 취업 준비생이거나 정체된 개발 실력으로 고민하고 있는 경력 개발자일 수도 있습니다.

[출판사 리뷰]
이 책은 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퀸 문제, 미로 문제에 백트래킹 알고리즘을 적용하여 실제 알고리즘으로 문제를 해결하는 방식을 살펴보겠습니다.

목차

서문

이 책을 보는 방법
이 책의 구성
이 책의 구성 요소
학습 로드맵

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 연습 문제

연습문제 정답

찾아보기

저자소개

저자 이상진은 핸디소프트와 삼성 SDS에서 개발자로 근무하였으며 현재는 (주)소만사에서 기업용 보안 소프트웨어를 개발하고 있습니다.
머신 러닝 기반의 검색 및 추천 알고리즘으로 서울대학교에서 박사 학위를 받았고 저서로는 《자료구조 입문》, 《열혈강의 C 언어 정복 리얼 교과서》, 《정보 보안 가이드북》 등이 있습니다.

도서소개

『코드와 그림으로 마스터하는 알고리즘』은 알고리즘을 통해 여러분의 개발 실력을 향상시키는 해결책을 제시한 교재이다. 이 책은 기능을 구현하는 방법에 대한 질문에 알고리즘이라는 해답을 제시하며, C 언어를 기본 구현 언어로 사용한다. 기본적인 자료구조(리스트, 스택, 큐 등)를 어느 정도 알고 있다고 가정하여, 알고리즘의 설명에 꼭 필요한 사항이 아닌 이상 자료구조 자체에 대한 설명은 최소화했다.

상세이미지

코드와 그림으로 마스터하는 알고리즘 도서 상세이미지

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.