문제 해결력을 높이는 알고리즘과 자료 구조

오츠키 켄스케 (지은이), 서수환 (옮긴이), 아키바 타쿠야 (감수) | 길벗 | 2022년 2월 정가 24,000원 판매가 21,600원 배송비 0원 (0원 이상 무료) 페이지 412쪽 판형 183*235mm 783g ISBN 9791165218874 상태 새책 or 중고 수량 합계 21,600

책소개

알고리즘 문제의 답을 스스로 생각하는, 코딩 테스트와 프로그래밍 경진대회 전 필독서. 이 책은 알고리즘 입문서이자 + 응용력, 문제 해결력을 높여주는 알고리즘 활용서다. 궁극적으로 알고리즘을 잘 다룰 수 있게 실력을 키우는 것을 목표로 한다.

우선 알고리즘에 대해 전혀 모르는 사람이 알고리즘의 전반적인 모습을 체계적으로 인식하고, 필요한 기초 개념과 기본적인 알고리즘을 배울 수 있다. 알고리즘을 설명할 때는 유명한 알고리즘을 단순히 소개하는 것이 아니라 어떻게 설계되었는지 설계 기법과 설계 과정, 응용 방법과 사례도 함께 설명한다. 또한, 다양한 상황에서 알고리즘을 사용해 문제를 해결할 수 있도록 알고리즘을 설계할 때 필요한 지식과 접근법을 설명한다. 목표는 알고리즘의 동작을 구체적으로 이해하고 실제 문제 해결에 사용하는 것이며, 알고리즘을 단순히 아는 것을 넘어서 잘 다루는 것이다. 우리는 알고리즘을 사용해 주어진 문제를 잘 풀기도 하고, 내가 직접 설계도 하고, 더 효율적으로 개선할 수도 있어야 한다. 이 책은 이를 위해 필요한 방법과 지식을 학습한다.

저자소개

오츠키 켄스케 (大槻兼資) (지은이)  
신간알리미 신청
석사(정보이공학)
2014년 도쿄대학 대학원 정보이공학계 연구과 수리정보학 전공, 석사 과정 수료
2015년 주식회사 NTT데이터 수리시스템 연구원
현재 주식회사 NTT데이터 수리시스템 고문
Twitter ID | @drken1215
서수환 (옮긴이)  
신간알리미 신청
일본에서 IT 시스템 아키텍처 관련 업무를 하는 엔지니어로 일하고 있으며 스크립트와 자동화가 취미이다. 다수의 IT 도서를 번역했다.
아키바 타쿠야 (감수)  
신간알리미 신청
박사(정보이공학)
2015년 도쿄대학 대학원 정보이공학계 연구과 컴퓨터과학 전공, 박사 후기 과정 수료
2015년 국립정보학 연구소 특임 조교(정보학 프린시플 연구계)
2016년 주식회사 Preferred Networks 연구원
현재 주식회사 Preferred Networks 집행임원 기계학습기반담당 VP
저서 『프로그래밍 콘테스트 챌린지북 2판(공저)』 (마이나비, 2012)
Twitter ID | @iwiwi
아키바 타쿠야(감수)의 말
이 책은 입문서에서 중요한 기초를 확실히 다지도록 해주면서 구성이 개성적입니다. 유명 알고리즘을 소개하는 데 그치지 않고 알고리즘 응용법과 설계 방법에도 비중을 둡니다. 널리 쓰이는 알고리즘 교과서의 구성은 유명 알고리즘을 단순히 소개하는 형식이 대다수입니다. ‘이런 처리를 하면 되니까 XX 알고리즘을 사용하자’라고 바로 답이 나오는 상황이라면 참고용으로 좋겠지요. 하지만 현실 세계에서 우리가 직면하는 문제는 그렇게 간단히 끝나지 않습니다. 어떤 알고리즘을 어떻게 사용하면 좋을지 알 수 없고 직접 알고리즘을 설계해야 하거나 해결 가능 여부조차 알 수 없는 그런 상황도 적지 않습니다. 이 책은 이런 다양한 상황에서 알고리즘 능력을 사용해 문제를 해결할 수 있도록 유명 알고리즘을 소개할 뿐만 아니라 알고리즘을 설계할 때 필요한 접근법(설계 기법)을 상세히 설명합니다.
오츠키 켄스케(지은이)의 말
알고리즘을 배운다는 건 단순히 지식을 흡수하는 것이 아니라 세상의 다양한 문제를 해결하는 수단을 늘려가는 것입니다. 알고리즘이란 원래 문제를 풀기 위한 절차를 말합니다. 알고리즘 동작을 구체적으로 이해하는 걸 넘어서 실제로 문제 해결에 도움이 될 때 비로소 알고리즘을 배웠다고 할 수 있습니다.
알고리즘을 배우기 시작한 후 세상의 여러 문제와 마주쳤을 때 세계관에 혁명이 일어난 걸 기억합니다. 저도 알고리즘을 배우기 전에는 문제를 해결하는 행위란 고등학교 수학에서 배우던 ‘공식’ 같은 걸 찾는 거라고 생각했습니다. 그러니까 문제를 푸는 구체적이고 명확한 답을 구하는 것이 문제 해결이라고 무의식적으로 생각했습니다. 하지만 알고리즘을 배우고 나서는 ‘구체적인 답을 구하지 못하더라도 답에 다가가는 절차를 찾는 것’이라고 문제 풀이를 바라보는 관점이 변했고, 그에 따라 문제 해결 수단이 크게 늘어난 기분이 들었습니다. 이 책으로 여러분과 이런 감각을 공유할 수 있게 되길 바라며, 알고리즘을 설계하고 구현하는 즐거움을 느낄 수 있다면 저에게도 큰 즐거움일 것입니다.

출판사소개

목차

1장 알고리즘이란?
1.1 알고리즘이란 무엇인가?
1.2 알고리즘 예제(1): 깊이 우선 탐색과 너비 우선 탐색
1.2.1 빈 칸 채우기 퍼즐로 배우는 깊이 우선 탐색
1.2.2 미로로 배우는 너비 우선 탐색
1.3 알고리즘 예제(2): 매칭
1.4 알고리즘 서술 방법
1.5 알고리즘을 배우는 의미
1.6 연습 문제

2장 복잡도와 빅오 표기법
2.1 복잡도란?
2.2 복잡도와 빅오 표기법
2.2.1 복잡도 빅오 표기법 생각해 보기
2.2.2 코드 2-1의 복잡도
2.2.3 코드 2-2의 복잡도
2.2.4 실제로 복잡도 구해 보기
2.2.5 복잡도를 빅오 표기법으로 표시하는 이유
2.3 복잡도를 구하는 예(1): 짝수 나열
2.4 복잡도를 구하는 예(2): 최근접 점쌍 문제
2.5 복잡도 사용법
2.6 복잡도 관련 주의 사항
2.6.1 시간 복잡도와 공간 복잡도
2.6.2 최악 시간 복잡도와 평균 시간 복잡도
2.7 란다우 빅오 표기법 상세 설명(*)
2.7.1 란다우 빅오 표기법
2.7.2 오메가 표기법
2.7.3 세타 표기법
2.8 마무리
2.9 연습 문제

3장 설계 기법(1): 전체 탐색
3.1 전체 탐색을 배우는 의미
3.2 전체 탐색(1): 선형 탐색법
3.3 선형 탐색법의 응용
3.3.1 조건을 만족하는 위치 파악 가능
3.3.2 최솟값 구하기
3.4 전체 탐색(2): 쌍 전체 탐색
3.5 전체 탐색(3): 조합 전체 탐색(*)
3.6 정리
3.7 연습 문제

4장 설계 기법(2): 재귀와 분할 정복법
4.1 재귀란 무엇인가?
4.2 재귀 사용 예(1): 유클리드 호제법
4.3 재귀 사용 예(2): 피보나치 수열
4.4 메모이제이션 동적 계획법
4.5 재귀 사용 예(3): 재귀 함수를 사용한 전체 탐색
4.5.1 부분합 문제
4.5.2 부분합 문제에 대한 재귀적 전체 탐색 복잡도(*)
4.5.3 부분합 문제에 대한 메모이제이션(*)
4.6 분할 정복법
4.7 정리
4.8 연습 문제

5장 설계 기법(3): 동적 계획법
5.1 동적 계획법이란?
5.2 동적 계획법 예제
5.3 동적 계획법 관련 개념도
5.3.1 완화
5.3.2 끌기 전이 형식과 밀기 전이 형식
5.3.3 끌기 전이 형식과 밀기 전이 형식 비교
5.3.4 전체 탐색 메모이제이션을 이용한 동적 계획법
5.4 동적 계획법 예제(1): 냅색 문제
5.5 동적 계획법 예제(2): 편집 거리
5.6 동적 계획법 예제(3): 구간 분할 최적화
5.7 정리
5.8 연습 문제

6장 설계 기법(4): 이진 탐색법
6.1 배열 이진 탐색
6.1.1 배열 이진 탐색
6.1.2 배열 이진 탐색 복잡도(*)
6.2 C++의 std::lower_bound()
6.3 일반화한 이진 탐색법
6.4 좀 더 일반화한 이진 탐색법(*)
6.5 응용 예(1): 나이 맞히기 게임
6.6 응용 예(2): std::lower_bound() 활용
6.7 응용 예(3): 최적화 문제를 판정 문제로 바꾸기
6.8 응용 예(4): 중앙값 구하기
6.9 정리
6.10 연습 문제

7장 설계 기법(5): 탐욕법
7.1 탐욕법이란?
7.2 탐욕법으로 최적해를 구할 수 없는 경우
7.3 탐욕법 패턴(1): 교환해도 악화되지 않음
7.4 탐욕법 패턴(2): 현재가 좋으면 미래도 좋음
7.5 정리
7.6 연습 문제

8장 자료 구조(1): 배열, 연결 리스트, 해시 테이블
8.1 자료 구조를 배우는 의미
8.2 배열
8.3 연결 리스트
8.4 연결 리스트 삽입과 삭제
8.4.1 연결 리스트 삽입
8.4.2 연결 리스트 삭제
8.5 배열과 연결 리스트 비교
8.6 해시 테이블
8.6.1 해시 테이블 만드는 법
8.6.2 해시 충돌 대책
8.6.3 해시 테이블 복잡도
8.6.4 C++와 파이썬의 해시 테이블
8.6.5 연상 배열
8.7 정리
8.8 연습 문제

9장 자료 구조(2): 스택과 큐
9.1 스택과 큐의 개념
9.2 스택과 큐의 동작과 구현
9.2.1 스택 동작과 구현
9.2.2 큐 동작과 구현
9.3 정리
9.4 연습 문제

10장 자료 구조(3): 그래프와 트리
10.1 그래프
10.1.1 그래프 사고방식
10.1.2 유향 그래프와 무향 그래프
10.1.3 워크, 사이클, 패스
10.1.4 연결성
10.2 그래프를 사용하는 공식화 예시
10.2.1 소셜 네트워크
10.2.2 교통 네트워크
10.2.3 게임 국면 전이
10.2.4 작업 의존 관계
10.3 그래프 구현
10.4 가중 그래프 구현
10.5 트리
10.5.1 루트 트리
10.5.2 부분 트리와 트리 높이
10.6 순서 트리와 이진 트리
10.6.1 순서 트리와 이진 트리
10.6.2 강균형 이진 트리
10.7 이진 트리를 사용한 자료 구조 예(1): 힙
10.7.1 힙이란?
10.7.2 힙 실현 방법
10.7.3 힙 쿼리 처리
10.7.4 힙 구현 예
10.7.5 O(N) 복잡도로 힙 구축(*)
10.8 이진 트리를 사용하는 자료 구조 예(2): 이진 탐색 트리
10.9 정리
10.10 연습 문제

11장 자료 구조(4): Union-Find
11.1 Union-Find란?
11.2 Union-Find 구조
11.3 Union-Find 복잡도를 줄이는 방법
11.4 Union-Find 개선법 1: union by size
11.4.1 union by size란?
11.4.2 union by size 복잡도 분석
11.5 Union-Find 개선법 2: 경로 압축
11.6 Union-Find 구현
11.7 Union-Find 응용: 그래프 연결 요소 개수
11.8 정리
11.9 연습 문제

12장 정렬
12.1 정렬이란?
12.2 정렬 알고리즘의 좋고 나쁨
12.2.1 in-place와 안정성
12.2.2 어떤 정렬 알고리즘이 좋은가?
12.3 정렬(1): 삽입 정렬
12.3.1 동작과 구현
12.3.2 삽입 정렬 복잡도와 성질
12.4 정렬(2): 병합 정렬
12.4.1 동작과 구현
12.4.2 병합 정렬 복잡도와 성질
12.4.3 병합 정렬 복잡도를 자세히 분석하기(*)
12.5 정렬(3): 퀵 정렬
12.5.1 동작과 구현
12.5.2 퀵 정렬 복잡도와 성질
12.5.3 무작위 선택 퀵 정렬(*)
12.6 정렬(4): 힙 정렬
12.7 정렬 복잡도의 하한값
12.8 정렬(5): 버킷 정렬
12.9 정리
12.10 연습 문제

13장 그래프(1): 그래프 탐색
13.1 그래프 탐색을 배우는 의의
13.2 깊이 우선 탐색과 너비 우선 탐색
13.3 재귀 함수를 사용하는 깊이 우선 탐색
13.4 전위 순회와 후위 순회
13.5 최단 경로 알고리즘으로 너비 우선 탐색
13.6 깊이 우선 탐색과 너비 우선 탐색의 복잡도
13.7 그래프 탐색 예(1): s-t 패스 구하기
13.8 그래프 탐색 예(2): 이분 그래프 판정
13.9 그래프 탐색 예(3): 위상 정렬
13.10 그래프 탐색 예(4): 트리 동적 계획법(*)
13.11 정리
13.12 연습 문제

14장 그래프(2): 최단 경로 문제
14.1 최단 경로 문제란?
14.1.1 가중치 유향 그래프
14.1.2 단일 시작점 최단 경로 문제
14.1.3 음의 변과 음의 닫힌 경로
14.2 최단 경로 문제 정리
14.3 완화
14.4 DAG의 최단 경로 문제: 동적 계획법
14.5 단일 시작점 최단 경로 문제: 벨만-포드 알고리즘
14.5.1 벨만-포드 알고리즘 아이디어
14.5.2 벨만-포드 알고리즘 구현
14.5.3 벨만-포드 알고리즘의 정확성(*)
14.6 단일 시작점 최단 경로 문제: 다익스트라 알고리즘
14.6.1 두 종류의 다익스트라 알고리즘
14.6.2 단순한 다익스트라 알고리즘
14.6.3 다익스트라 알고리즘의 직감적인 이미지
14.6.4 다익스트라 알고리즘 정확성(*)
14.6.5 희소 그래프인 경우: 힙을 사용한 고속화(*)
14.7 모든 쌍의 최단 경로 문제: 플로이드-워셜 알고리즘
14.8 참고: 포텐셜과 차분 제약계(*)
14.9 정리
14.10 연습 문제

15장 그래프(3): 최소 신장 트리 문제
15.1 최소 신장 트리 문제란?
15.2 크러스컬 알고리즘
15.3 크러스컬 알고리즘 구현
15.4 신장 트리 구조
15.4.1 컷
15.4.2 기본 사이클
15.4.3 기본 컷 집합
15.5 크러스컬 알고리즘의 정확성(*)
15.6 정리
15.7 연습 문제

16장 그래프(4): 네트워크 흐름
16.1 네트워크 흐름을 배우는 의의
16.2 그래프 연결도
16.2.1 변 연결도
16.2.2 최소 컷 문제
16.2.3 변 연결도를 구하는 알고리즘과 강 쌍대성 증명
16.3 최대 흐름 문제와 최소 컷 문제
16.3.1 최대 흐름 문제란?
16.3.2 흐름의 성질
16.3.3 최소 컷 문제와 쌍대성
16.3.4 포드-풀커슨 알고리즘
16.4 포드-풀커슨 알고리즘 구현
16.5 응용 예(1): 이분 매칭
16.6 응용 예(2): 점 연결도
16.7 응용 예(3): 프로젝트 선택 문제
16.8 정리
16.9 연습 문제

17장 P와 NP
17.1 문제의 어려움을 측정하는 방법
17.2 P와 NP
17.3 P ≠ NP 문제
17.4 NP 완전
17.5 다항식 시간 환원 예
17.5.1 꼭짓점 커버 문제
17.5.2 부분합 문제(*)
17.6 NP 난해
17.7 정지 문제
17.8 정리
17.9 연습 문제

18장 어려운 문제 대책
18.1 NP 난해 문제와 마주하기
18.2 특수한 경우로 풀리는 방법
18.3 탐욕법
18.4 국소 탐색과 담금질 기법
18.5 분기 한정법
18.6 정수계획 문제로 공식화
18.7 근사 알고리즘
18.8 정리
18.9 연습 문제

19장 참고 문헌
19.1 알고리즘 전반
19.2 알고리즘 전반(본격적인 전문서)
19.3 복잡도, P와 NP
19.4 그래프 알고리즘, 조합 최적화
19.5 어려운 문제 대책
19.6 기타 분야

후기
찾아보기

더보기

배송

- 배송비, 무료배송비는 업체 사정에 따라 달라질 수 있습니다.
- 배송은 결제 확인 후 다음날부터 2~3일 이내에 배송됩니다. (단 도서 산간지역은 1~2일정도 더 소요됩니다.)
- 공휴일은 배송기간에 포함되지 않습니다.
- 주문하신 상품이 여러개인 경우 동일한 업체의 상품만 묶음 배송 가능합니다. (업체 사정에 따라 달라질 수 있습니다.)
- 배송정보는 상단 주문조회나 마이페이지 주문목록에서 가능합니다.

상품 품절

- 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는 이메일과 문자로 안내드립니다.

주문취소/변경

- 주문 상품에 대한 변경사항(품절,가격변동)이 발생하면 전화나 메일을 통해 변경내용을 알려드립니다.
- 주문 상품의 변경/취소/환불은 배송 시작전 마이페이지에서 직접 신청이 가능합니다.
- 주문 상품이 발송된 시점에서는 변경/취소/환불이 모두 불가능합니다.

반품/교환

- 기간 : 배송받으신 후 7일 이내에 가능합니다.
- 방법 : 홈페이지 마이페이지 > 반품/ 교환 신청 및 조회에서 가능합니다.
- 배송비 부담 : 상품에 이상이 있을시에는 무료, 고객의 단순변심 및 착오구매일 경우 상품 반송비용은 고객 부담입니다.
- 포장 개봉 후 재판매가 불가능한 상품은 반품/교환이 불가능합니다.
- 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우, 반품/교환이 불가능합니다.

반품/교환 불가 사유

- 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우 (단지 확인을 위한 포장 훼손은 제외)
- 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
- 복제가 가능한 상품 등의 포장을 훼손한 경우
- 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우
- 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
- 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
- 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우

소비자 피해보상 환불 지연에 따른 배상

- 상품의 불량에 의한 반품, 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 준하여 처리합니다.
- 대금 환불 및 환불 지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리합니다.

Copyright © 2022 이츠북. All Rights Reserved.