자바스크립트로 하는 자료 구조와 알고리즘 (핵심 자료 구조와 알고리즘을 이해하고 구현하기 위한 입문서)

자바스크립트로 하는 자료 구조와 알고리즘 (핵심 자료 구조와 알고리즘을 이해하고 구현하기 위한 입문서)

$31.69
Description
자료 구조와 알고리즘의 개념을 이해하고 이를 자바스크립트로 구현하기 위한 책이다. 자바스크립트 프로그래머라면 제대로 된 애플리케이션을 만들기 위해 알아야 할 핵심 자료 구조와 알고리즘을 다룬다. 해시 테이블, 연결 리스트, 큐, 트리, 그래프 등의 핵심 자료 구조와 검색, 정렬, 재귀, 동적 프로그래밍, 비트 연산 등의 핵심 알고리즘을 배우고 이를 실제 자바스크립트로 구현해본다. 이러한 과정을 통해 자료 구조와 알고리즘에 대한 이해도를 높일 수 있을 뿐만 아니라 자바스크립트 구현 능력도 키울 수 있다.
저자

배세민

옐프(Yelp)에서근무중인데이터엔지니어다.엔비디아(NVIDIA)의데이터플랫폼엔지니어링팀에서일한바있다.스마트테크놀로지스(SMARTTechnologies)에서인턴생활을하면서자바스크립트에깊은관심을갖게됐다.스마트테크놀로지스에서보드드라이버와웹애플리케이션간직렬포트통신을위한Node.js기반자바스크립트API를개발했다.자바스크립트가최신소프트웨어엔지니어링산업에밀접한영향을미침에도이책을제외하고는자바스크립트를사용해알고리즘과자료구조를가르치는책이없다.이러한알고리즘과자료구조와같은컴퓨터과학개념이얼마나어려운지잘이해하고있다.이책의목표는어려운개념을명확하고간결하게설명하는것이다.

목차

지은이소개
한국어판출간에부쳐
감사의글
기술감수자소개
옮긴이소개
옮긴이의말
들어가며

1장.빅오표기법
__빅오표기법기초
____일반적인예
__빅오표기법규칙
____계수법칙:“상수를제거하라”
____합의법칙:“빅오를더하라”
____곱의법칙:“빅오를곱하라”
____다항법칙:“빅오의k승”
__요약
__연습문제
____정답

2장.자바스크립트의독특한특징
__자바스크립트범위
____전역선언:전역범위
____var를사용해선언하기:함수범위
____let을활용한선언:블록범위
__등가와형
____변수형
____참/거짓확인
____===대==
____객체
__요약

3장.자바스크립트숫자
__숫자체계
__자바스크립트숫자객체
____정수반올림
____NumberEPSILON
____최대치
____최소치
____무한
____크기순서
____숫자알고리즘
____소인수분해
__무작위수생성기
__연습문제
__요약

4장.자바스크립트문자열
__자바스크립트문자열기본
____문자열접근
____문자열비교
____문자열검색
____문자열분해
____문자열바꾸기
__정규표현식
____기본정규표현식
____자주사용하는정규표현식
____숫자를포함하는문자
____숫자만포함하는문자
____부동소수점문자
____숫자와알파벳만을포함하는문자
____질의문자열
__인코딩
__Base64인코딩
__문자열단축
__암호화
____RSA암호화
__요약

5장.자바스크립트배열
__배열소개
____삽입
____삭제
____접근
__반복
____for(변수;조건;수정)
____for(in)
____for(of)
____forEach()
__도움함수
____slice(begin,end)
____splice(begin,size,element1,element2)
____concat()
____length속성
____전개연산자
__연습문제
__자바스크립트함수형배열메소드
____map
____filter
____reduce
__다차원배열
__연습문제
__요약

6장.자바스크립트객체
__자바스크립트객체속성
____프로토타입활용상속
__생성자와변수
__요약
__연습문제

7장.자바스크립트메모리관리
__메모리누수
____객체에대한참조
____DOM메모리누수
____window전역객체
____객체참조제한하기
____delete연산자
__요약
__연습문제

8장.재귀
__재귀소개
__재귀의규칙
____기저조건
____분할정복방식
____대표적인예:피보나치수열
____피보나치수열:꼬리재귀
____파스칼의삼각형
__재귀의빅오분석
____점화식
____마스터정리
__재귀호출스택메모리
__요약
__연습문제

9장.집합
__집합소개
__집합연산
____삽입
____삭제
____포함
__기타유틸리티함수
____교집합
____상위집합여부확인
____합집합
____차집합
__요약
__연습문제

10장.검색과정렬
__검색
____선형검색
____이진검색
__정렬
____거품정렬
____선택정렬
____삽입정렬
____빠른정렬
____빠른선택
____병합정렬
____계수정렬
____자바스크립트내장정렬
__요약
__연습문제

11장.해시테이블
__해시테이블소개
__해싱기법
____소수해싱
____탐사
____재해싱/이중해싱
__해시테이블구현
____선형탐사사용하기
____이차탐사사용하기
____선형탐사를활용해이중해싱사용하기
__요약

12장.스택과큐
__스택
____들여다보기
____삽입
____삭제
____접근
____검색
__큐
____들여다보기
____삽입
____삭제
____접근
____검색
__요약
__연습문제

13장.연결리스트
__단일연결리스트
____삽입
____값에의한삭제
____헤드항목삭제
____검색
__이중연결리스트
____헤드에항목삽입하기
____테일에항목삽입하기
____헤드의항목삭제하기
____테일의항목삭제하기
____검색
__요약
__연습문제

14장.캐싱
__캐싱이해하기
__LFU캐싱
__LRU캐싱
__요약

15장.트리
__일반적인트리구조
__이진트리
__트리순회
____선순위순회
____중순위순회
____후순위순회
____단계순위순회
____트리순회요약
__이진검색트리
____삽입
____삭제
____검색
__AVL트리
____단일회전
____오른쪽회전
____이중회전
____트리균형잡기
____삽입
____AVL트리예제종합
__요약
__연습문제

16장.힙
__힙에대한이해
____최대힙
____최소힙
__이진힙배열인덱스구조
____삼투:위로아래로이동
____삼투구현하기
____최대힙예
__최소힙구현완성
__최대힙구현완성
__힙정렬
____오름차순정렬(최소힙)
____내림차순정렬(최대힙)
__요약
__연습문제

17장.그래프
__그래프기본
__무지향성그래프
____간선과정점추가하기
____간선과정점삭제하기
__지향성그래프
__그래프순회
____너비우선검색
____깊이우선검색
__가중치가있는그래프와최단경로
____가중치가있는간선을지닌그래프
____다익스트라의알고리즘:최단경로
__위상정렬
__요약

18장.고급문자열
__트라이(접두사트리)
__보이어-무어문자열검색
__커누스-모리스-플랫문자열검색
__라빈-카프검색
____라빈지문
____실생활적용예
__요약

19장.동적프로그래밍
__동적프로그래밍의필요성
__동적프로그래밍의규칙
____중복부분문제
____최적부분구조
____예:걸음수를채우는방법
__대표적인동적프로그래밍예
____배낭문제알고리즘
____최장공통부분수열알고리즘
____동전교환알고리즘
____편집거리알고리즘
__요약

20장.비트조작
__비트연산자
____AND
____OR
____XOR
____NOT
____왼쪽이동
____오른쪽이동
____오른쪽이동후0으로채우기
__숫자연산
____덧셈
____뺄셈
____곱셈
____나눗셈
__요약

찾아보기

출판사 서평

자바스크립트는1995년넷스케이프(NetScape)의브렌던아이크(BrendanEich)가개발했다.넷스케이프는역사상첫번째웹브라우저중하나인넷스케이프브라우저를개발하던곳이었다.그리고오늘날자바스크립트는어디서나가장인기있는프로그래밍언어로널리쓰이고있다.
예를들어우버(Uber)의차량관리시스템은Node.js로초당2백만개이상의원격프로시저호출(RPC)을실행하고있다.페이스북(Facebook)의리액트네이티브(ReactNative)는웹과휴대폰에동일한코드를작성할수있도록한다.나사(NASA)에서도Node.js를사용해서우주복자료시스템(spacesuitsystemsdata)을관리하고있다.
실리콘밸리에서일하며자바스크립트의인기가높아지는것을지켜봐왔다.자바스크립트는4년동안깃허브(Github)에서제일인기많은프로그래밍언어중하나다.그리고이제는자바(Java)와마찬가지로마이크로소프트(Microsoft)의타입스크립트(TypeScript)로자바스크립트를객체지향언어처럼사용할수있다.자바스크립트는다양하고강력한프로그래밍언어이고응용하는데제한이없어현재그어떤프로그래밍언어보다사용하기적절하다.

★옮긴이의말★
HTML의등장과함께,자바스크립트는웹브라우저내에서사용되는클라이언트사이드(client-side)프로그래밍언어로많은사랑을받았다.기존에자바스크립트는주로웹브라우저내에서사용되며클라이언트사이드프로그래밍을위해사용됐다.전세계의웹브라우저중자바스크립트를지원하지않는웹브라우저를찾기힘들만큼많은사랑을받았다.하지만Node.js의등장과함께최근에는서버사이드(server-side)프로그래밍언어로많은인기를끌고있으며,모바일앱등의개발에도널리사용되고있다.
이렇게자바스크립트의활용도가늘어나고더복잡한애플리케이션개발에사용됨에따라전통적으로자바,C++,C#프로그래머에게중요한자료구조와알고리즘이자바스크립트프로그래머에게도중요해졌다.이책은이러한흐름에맞춰기존자바스크립트프로그래머가자료구조와알고리즘의개념을이해하고이를실제로자바스크립트로구현할수있도록돕는다.
연결리스트와같은기초적인자료구조부터동적프로그래밍에이르기까지핵심자료구조와알고리즘을다루고있으며,이를실제로자바스크립트로구현해보고배운내용을실전에서활용할수있도록구성돼있다.
아직까지자바스크립트로구현한자료구조와알고리즘책이시중에많지않은상황에서이론과구현을겸비한이책은자바스크립트프로그래머로서수준을한단계높이고자하는독자들에게단비와같은책이다.