자바로 배우는 핵심 자료구조와 알고리즘 (기술 면접에 필요한 실용주의 자료구조와 알고리즘)

자바로 배우는 핵심 자료구조와 알고리즘 (기술 면접에 필요한 실용주의 자료구조와 알고리즘)

$16.00
Description
자료구조와 알고리즘을 활용하여 간단한 웹 검색 엔진 만들기
이 책은 컴퓨터과학을 공부하거나 기술 인터뷰를 준비하는 소프트웨어 개발자를 위한 실용적인 책입니다. 자료구조와 알고리즘을 빠르게 배울 수 있도록 실용적이고 중요한 부분을 중점으로 설명합니다. 자료구조가 어떻게 동작하는지보다 어떻게 활용하는지에 초점을 맞추었습니다.
이 책은 웹 검색이라는 응용 분야에 집중합니다. 이 분야는 자료구조를 광범위하게 사용하며 자체로도 흥미롭고 중요합니다. 다른 책에서는 보기 어렵지만 기술 인터뷰에 필요한 내용입니다. 또한, 버전 관리와 유닛 테스트 같은 기본적인 소프트웨어 엔지니어링 실무 내용도 다룹니다. 장마다 배운 것을 확인할 수 있는 예제가 있고, 해답을 확인할 수 있는 자동화된 테스트도 제공합니다.

- 리스트와 맵 등의 자료구조 사용과 작동 방식 이해하기
- 위키피디아 페이지를 읽고, 분석하고, 결과 데이터 트리를 탐색하는 응용 프로그램 작성하기
- 코드를 분석하여 실행시간과 필요한 메모리양 예측하기
- 해시 테이블과 이진 검색 트리를 사용하여 맵 인터페이스 구현하기
- 크롤러로 웹 검색 엔진 구축하기
저자

앨런B.다우니

저자앨런B.다우니(AllenB.Downey)
올린공과대학교(OlinCollegeofEngineering)의컴퓨터공학과교수로,웰즐리대학교(WellesleyCollege)와콜비대학교(ColbyCollege),UC버클리대학교(UCBerkeley)에서강의하였습니다.UC버클리대학교에서컴퓨터공학박사학위를,MIT에서석사와학사학위를받았습니다.이책외에도『ThinkStats』(2013),『파이썬을활용한베이지안통계』(2014,이상한빛미디어)를집필하였습니다.

목차

CHAPTER1인터페이스
_1.1리스트가두종류인이유
_1.2자바interface
_1.3Listinterface
_1.4실습1

CHAPTER2알고리즘분석
_2.1선택정렬
_2.2빅오표기법
_2.3실습2

CHAPTER3ArrayList클래스
_3.1MyArrayList메서드분류하기
_3.2add메서드분류하기
_3.3문제크기
_3.4연결자료구조
_3.5실습3
_3.6가비지컬렉션

CHAPTER4LinkedList클래스
_4.1MyLinkedList메서드분류하기
_4.2MyArrayList와MyLinkedList비교하기
_4.3프로파일
_4.4결과해석하기
_4.5실습4

CHAPTER5이중연결리스트
_5.1성능프로파일결과
_5.2LinkedList메서드프로파일하기
_5.3LinkedList끝에더하기
_5.4이중연결리스트
_5.5자료구조선택하기
CHAPTER6트리순회
_6.1검색엔진
_6.2HTML파싱하기
_6.3jsoup사용하기
_6.4DOM트리반복하기
_6.5깊이우선탐색
_6.6스택
_6.7반복적DFS

CHAPTER7철학으로가는길
_7.1시작하기
_7.2Iterable과Iterator
_7.3WikiFetcher
_7.4실습5

CHAPTER8인덱서
_8.1자료구조선택
_8.2TermCounter
_8.3실습6

CHAPTER9Map인터페이스
_9.1MyLinearMap구현하기
_9.2실습7
_9.3MyLinearMap분석하기

CHAPTER10해싱
_10.1해싱
_10.2해싱의동작방식
_10.3해싱과변형
_10.4실습8

CHAPTER11HashMap클래스
_11.1실습9
_11.2MyHashMap분석하기
_11.3트레이드오프
_11.4MyHashMap프로파일링
_11.5MyHashMap클래스고치기
_11.6UML클래스다이어그램

CHAPTER12TreeMap클래스
_12.1해싱의문제점
_12.2이진탐색트리
_12.3실습10
_12.4TreeMap구현하기

CHAPTER13이진탐색트리
_13.1단순한MyTreeMap클래스
_13.2값탐색하기
_13.3put메서드구현하기
_13.4중위순회
_13.5로그시간메서드
_13.6자가균형트리
_13.7추가실습

CHAPTER14영속성
_14.1레디스
_14.2레디스클라이언트와서버
_14.3레디스기반인덱스만들기
_14.4레디스데이터타입
_14.5실습11
_14.6추가제안
_14.7설계힌트

CHAPTER15위키피디아크롤링
_15.1레디스기반의인덱서
_15.2조회성능분석
_15.3인덱싱성능분석
_15.4그래프순회
_15.5실습12

CHAPTER16불리언검색
_16.1크롤러해답
_16.2정보검색
_16.3불리언검색
_16.4실습13
_16.5Comparable과Comparator
_16.6확장

CHAPTER17정렬
_17.1삽입정렬
_17.2실습14
_17.3병합정렬분석
_17.4기수정렬
_17.5힙정렬
_17.6제한된힙정렬
_17.7공간복잡도

출판사 서평

이책은자료구조와알고리즘에대한내용을설명하기위해문제풀이형식으로구성되어있습니다.14개의실습을통해자바언어에서기본으로제공하는자료구조인자바컬렉션프레임워크(JavaCollectionsFramework,JCF)의주요클래스를중심으로개념을학습하고시간복잡도를분석하며성능을측정해봅니다.또한,성능개선에대해서도알려줍니다.
자료구조와알고리즘에대한이해는소프트웨어의품질을높이는아주기본적인작업입니다.요즘은빅데이터와클라우드가있고이미검증된수많은DBMS가있지만,단지활용만해서는원하는품질을얻기힘듭니다.내가잘만들고있는지,이미구현된레거시소프트웨어의병목은무엇인지분석하려면학부과정에서배우는자료구조와알고리즘이단단한기본기가되기때문입니다.졸업하고나면세부내용은모두잊히겠지만,머릿속어딘가에는남아다시떠올리게됩니다.
이책은한번에후루룩읽기에는꽤압축적인내용을담고있습니다.꼭설명해야할내용은본문에서충분히설명하지만,그외부가적인내용은과감하게외부링크를제공합니다.실습과제를먼저제공하고그다음장에서바로필자의해답을제시하기때문에부담을가질필요는없습니다.끝까지읽는다면큰도움이된다고확신합니다.
-옮긴이의말중에서