이미 소장하고 있다면 판매해 보세요.
|
1장 자료 구조가 중요한 까닭
__1.1 배열: 기초 자료 구조 __1.2 읽기 __1.3 검색 __1.4 삽입 __1.5 삭제 __1.6 집합: 단 하나의 규칙이 효율성을 바꾼다 __1.7 마무리 2장 알고리즘이 중요한 까닭 __2.1 정렬된 배열 __2.2 정렬된 배열의 검색 __2.3 이진 검색 __2.4 이진 검색 대 선형 검색 __2.5 마무리 3장 빅 오 표기법 __3.1 빅 오: 단계 수 계산 __3.2 상수 시간과 선형 시간 __3.3 같은 알고리즘, 다른 시나리오 __3.4 세 번째 유형의 알고리즘 __3.5 로가리즘 __3.6 O(log N) 해석 __3.7 실제 예제 __3.8 마무리 4장 빅 오로 코드 속도 올리기 __4.1 버블 정렬 __4.2 버블 정렬 실제로 해보기 __4.3 버블 정렬 구현 __4.4 버블 정렬의 효율성 __4.5 이차 문제 __4.6 선형 해결법 __4.7 마무리 5장 빅 오를 사용하거나 사용하지 않는 코드 최적화 __5.1 선택 정렬 __5.2 선택 정렬 실제로 해보기 __5.3 선택 정렬 구현 __5.4 선택 정렬의 효율성 __5.5 상수 무시하기 __5.6 빅 오의 역할 __5.7 실제 예제 __5.8 마무리 6장 긍정적인 시나리오 최적화 __6.1 삽입 정렬 __6.2 삽입 정렬해보기 __6.3 삽입 정렬 구현 __6.4 삽입 정렬의 효율성 __6.5 평균적인 경우 __6.6 실제 예제 __6.7 마무리 7장 해시 테이블로 매우 빠른 룩업 __7.1 해시 테이블 소개 __7.2 해시 함수로 해싱 __7.3 재미와 이익, 특히 이익을 남길 유의어 사전 만들기 __7.4 충돌 해결 __7.5 훌륭한 충돌 조정 __7.6 실제 예제 __7.7 마무리 8장 스택과 큐로 간결한 코드 생성 __8.1 스택 __8.2 스택 다뤄보기 __8.3 큐 __8.4 큐 다뤄보기 __8.5 마무리 9장 재귀를 사용한 재귀적 반복 __9.1 루프 대신 재귀 __9.2 기저 조건 __9.3 재귀 코드 읽기 __9.4 컴퓨터의 눈으로 바라본 재귀 __9.5 재귀 다뤄보기 __9.6 마무리 10장 속도를 높이는 재귀 알고리즘 __10.1 분할 __10.2 퀵 정렬 __10.3 퀵 정렬의 효율성 __10.4 최악의 시나리오 __10.5 퀵 셀렉트 __10.6 마무리 11장 노드 기반 자료 구조 __11.1 연결 리스트 __11.2 연결 리스트 구현 __11.3 읽기 __11.4 검색 __11.5 삽입 __11.6 삭제 __11.7 연결 리스트 다뤄보기 __11.8 이중 연결 리스트 __11.9 마무리 12장 이진 트리로 속도 향상 __12.1 이진 트리 __12.2 검색 __12.3 삽입 __12.4 삭제 __12.5 이진 트리 다뤄보기 __12.6 마무리 13장 그래프로 뭐든지 연결하기 __13.1 그래프 __13.2 너비 우선 탐색 __13.3 그래프 데이터베이스 __13.4 가중 그래프 __13.5 데이크스트라의 알고리즘 __13.6 마무리 14장 공간 제약 다루기 __14.1 공간 복잡도에 빅 오 표기법 적용 __14.2 시간과 공간 트레이드오프 __14.3 마치면서 |
Jay Wengrow
제이 웬그로우의 다른 상품
심지현의 다른 상품
|
[대상 독자]
- 이제 막 기초 프로그래밍을 배웠지만 컴퓨터 과학 기초를 배움으로써 더 나은 코드를 작성하고 프로그래밍 지식과 기술을 키우고 싶은 개발자 - 정규적인 컴퓨터 과학 수업을 받은 적이 없는 독학 개발자(또는 공부했지만 다 까먹은 개발자)면서 자료 구조와 알고리즘의 힘을 활용해 더 확장 가능하고 간결한 코드를 작성하고 싶은 개발자 - 자료 구조와 알고리즘을 쉽고 명확하게 설명한 교재를 원하는 컴퓨터 과학도. 어떤 “고전적인” 교재를 사용하든 이 책을 훌륭한 보조 교재로 사용할 수 있다. - 경력상 활용한 적이 거의 없지만 다가올 기술 면접시험을 위해 자료 구조와 알고리즘 개념을 복습해야 하는 개발자 [지은이의 말] 자료 구조와 알고리즘은 단순히 추상적인 개념이 아니다. 자료 구조와 알고리즘에 숙달하면 더 빠르게 실행되는 보다 효율적인 코드를 작성할 수 있고, 이는 오늘날의 웹과 모바일 앱에서 특히 중요하다. 만일 마지막으로 알고리즘을 마주한 게 대학 수업이나 면접이라면 알고리즘의 진정한 힘을 활용하지 못하고 있는 것이다. 문제는 이러한 주제를 다루는 자료가 대부분 이해하기 어렵게 쓰였다는 점이다. 글은 수학 용어로 가득 차 있고 수학자가 아닌 이상 도대체 무슨 말인지 알기 어렵다. 심지어 “쉬운” 알고리즘을 표방하는 책마저도 독자가 수학 석박사 학위를 취득했다고 가정한다. 결국, 무수한 독자들이 자신은 이러한 개념을 이해할 만큼 충분히 “똑똑하지” 않다고 생각하며 회피한다. 하지만 자료 구조와 알고리즘은 전부 본질적으로 상식선에서 이해할 수 있다. 수학 표기는 그저 특수한 언어이며, 어떤 수학이든 상식적인 용어로 설명할 수 있다. 이 책은 덧셈, 뺄셈, 곱셈, 나눗셈, 지수 외에는 어떤 수학도 사용하지 않는다. 그 밖에 개념은 쉽고 분명한 말로 풀어서 설명하고, 많은 그림을 사용해 즐겁게 이해할 수 있도록 돕는다. 자료 구조와 알고리즘을 이해했다면 효율적이고 빠르고 간결한 코드를 작성할 준비가 된 것이다. 여러 코드 대안의 장단점을 가늠할 수 있으며, 지식을 바탕으로 주어진 상황에서 어떤 코드가 가장 알맞은지 결정할 수 있다. 학교에서 관련 주제를 공부 중이라서 혹은 기술 면접을 준비할 목적으로 이 책을 읽는 독자도 있을 것이다. 물론 이 책이 컴퓨터 과학 기초를 이해하기 쉽게 설명하고 있고 목표를 달성하는 데 크게 도움도 되겠지만, 자료 구조와 알고리즘 개념이 일상적인 프로그래밍에 얼마나 큰 영향력을 발휘하는지 그 진가를 알아봤으면 좋겠다. 오늘 바로 활용할 수 있는 아이디어를 엄선해서 개념을 실제적이고 실용적으로 만들기 위해 특별히 노력을 기울였다. _제이 웬그로우 [옮긴이의 말] 자료 구조와 알고리즘은 어떤 컴퓨터 공학 교육과정에서든 가장 기본적으로 다루는 과목입니다. 하지만 기초를 쌓는 과정임에도 불구하고 처음 접하는 학생은 누구나 당혹스러움을 감추지 못하죠. 생소한 용어, 난해한 개념, 아무리 응용과학이라지만 수학도 아니고 과학도 아닌 것처럼 보이는 아리송한 내용이 끝없이 반복되거든요. 무엇을 위해 무엇을 배우고 있는가를 모르는 채 다 배웠다고 생각하며 한 학기가 끝납니다. 이렇게 되면 실제 개발과 이론 간 큰 공백이 생깁니다. 어렵게 배운 내용을 실용적으로 써보지도 못할뿐더러 다른 사람이 작성한 코드를 이해하고 분석하는 데도 한계가 있습니다. 훌륭한 프로그래머가 되려면 문법과 API만 꿰뚫어서는 부족하죠. 어떤 운영 체제에서 어떤 프로그래밍 언어를 사용하든 좋은 프로그램은 항상 적절한 자료 구조와 효율적인 알고리즘을 바탕으로 합니다. 필요할 때마다 관련 책이나 웹 페이지만 뒤적여서는 능력을 향상하기 어렵습니다. 이 책의 저자가 밝혔듯이 자료 구조와 알고리즘은 결코 어렵지 않습니다. 얼마든지 재밌고 이해하기 쉽게 설명될 수 있습니다. 복잡한 수학 개념이 아니라 이미 알고 있는 지식과 자세한 예제면 충분합니다. 이 책은 비전공자도 쉽게 따라갈 수 있는 설명과 구성으로 핵심 개념을 소개합니다. 또한, 자료 구조와 알고리즘 지식을 실제 개발에 적용해서 더욱 효과적이고 간결한 코드를 작성할 수 있도록 도와줍니다. 초심자라면 심화 과정을 듣기 전에 기초를 다지기 좋고, 숙련된 개발자라도 가볍게 되새기기 좋은 책입니다. _심지현 |