누구나 자료 구조와 알고리즘 (상식으로 이해하는 자료 구조와 알고리즘! | 2 판)

누구나 자료 구조와 알고리즘 (상식으로 이해하는 자료 구조와 알고리즘! | 2 판)

$33.00
Description
사칙 연산으로 복잡한 알고리즘을 쉽게 이해해보자

수학 용어와 전문 용어가 아니어도 이해한다
이 분야의 책은 대부분 컴퓨터 공학 전공자를 대상으로 쓰였거나 고등학교 수학을 잘 안다고 가정하고 있다. 쉽게 설명했다는 책도 전문 용어로 가득하다. 비전공자나 수학적 기초가 약한 독자는 전문 용어에 두려움을 느끼며 이 주제를 이해할 만큼 자신이 똑똑하지 않다고 느끼며 이 주제를 회피한다. 그러나 자료 구조와 알고리즘은 대부분 상식선에서 이해할 수 있다. 엄밀한 수학적 분석이 아니어도 직관으로 이해할 수 있는 범위에서 상식이 통하는 설명으로 자료 구조와 알고리즘을 이해해보자.

프로그래밍의 핵심 스킬을 이해한다
자료 구조와 알고리즘은 프로그래밍의 핵심 스킬이다. 더 빠른 코드, 더 효율적인 코드를 작성하려면 반드시 알아야 하는 사고 방식이 자료 구조와 알고리즘에 담겨 있다. 추상적인 개념만 설명하는 대신 실생활에서 마주할 수 있는 상황을 제시하며 자료 구조와 알고리즘을 적용하는 방법을 보여준다. 자료 구조와 알고리즘은 개념만 이해하면 어떤 언어로도 구현할 수 있다는 것도 보여준다. 이 책에서는 자바스크립트, 루비, 파이썬으로 된 예제를 제시한다.

자료 구조와 알고리즘을 선택하는 방법을 배운다
전공 교재는 자료 구조와 알고리즘을 암기하고 시험만 볼 뿐이다. 입사 면접에서는 어떤 문제를 두고 배열, 연결 리스트, 해시 중에 무엇을 선택해야 하는지, 왜 그게 최적의 방법인지 묻는다. 자료 구조를 선택하는 방법, 선택한 자료 구조가 코드의 성능에 어떤 영향을 미치는지 설명하므로 암기된 단편적인 지식이 아닌 연결된 지식을 가르치고, 입사 면접을 준비할 때도 참고할 수 있게 했다.

2판에서 달라진 점
코딩 테스트에 출제 빈도가 높은 다이나믹 프로그래밍, 트라이(Trie)에 대한 내용을 추가로 담았다. 재귀를 사용한 재귀적 반복과 속도를 높이는 재귀 알고리즘에 더해 재귀 알고리즘을 작성하는 방법에서는 문제의 유형에 따라 재귀 알고리즘을 작성하는 방법을 장으로 추가하고 자세한 전략을 담았다. 코딩 면접에서 자주 묻는 구현 알고리즘 개선 문제에 대한 항목을 최적화 주제로 보강했고, 각 장에는 더 연습할 수 있는 문제를 추가로 수록했다.
저자

제이웬그로우

세상을코딩하는법을가르치는데전념하고있는전문교육자이자개발자이다.코딩부트캠프와실습을가르치는Actualize의설립자이자CEO이다."누구나코딩할수있다(AnyoneCanLearnToCode)"라는교육회사에서온라인으로코딩을가르치고있으며,고등학교컴퓨터과학커리큘럼,기업체교육훈련을운영하고있다.

목차

1장자료구조가중요한까닭
__1.1자료구조
__1.2배열:기초자료구조
____1.2.1자료구조연산
__1.3속도측정
__1.4읽기
__1.5검색
__1.6삽입
__1.7삭제
__1.8집합:단하나의규칙으로효율성이달라진다
__1.9마무리
__1.10연습문제

2장알고리즘이중요한까닭
__2.1정렬된배열
__2.2정렬된배열의검색
__2.3이진검색
____2.3.1코드구현:이진검색
__2.4이진검색대선형검색
____2.4.1깜짝퀴즈
__2.5마무리
__2.6연습문제

3장빅오표기법
__3.1빅오:원소가N개일때몇단계가필요할까?
__3.2빅오의본질
____3.2.1빅오의본질더파고들기
____3.2.2같은알고리즘,다른시나리오
__3.3세번째유형의알고리즘
__3.4로가리즘
__3.5O(logN)해석
__3.6실제예제
__3.7마무리
__3.8연습문제

4장빅오로코드속도올리기
__4.1버블정렬
__4.2버블정렬실제로해보기
____4.2.1버블정렬구현
__4.3버블정렬의효율성
__4.4이차문제
__4.5선형해결법
__4.6마무리
__4.7연습문제

5장빅오를사용하거나사용하지않는코드최적화
__5.1선택정렬
__5.2선택정렬실제로해보기
____5.2.1선택정렬구현
__5.3선택정렬의효율성
__5.4상수무시하기
__5.5빅오카테고리
____5.5.1실제예제
____5.5.2중요한단계
__5.6마무리
__5.7연습문제

6장긍정적인시나리오최적화
__6.1삽입정렬
__6.2삽입정렬실제로해보기
____6.2.1삽입정렬구현
__6.3삽입정렬의효율성
__6.4평균적인경우
__6.5실제예제
__6.6마무리
__6.7연습문제

7장일상적인코드속빅오
__7.1짝수의평균
__7.2단어생성기
__7.3배열예제
__7.4평균섭씨온도구하기
__7.5의류상표
__7.61세기
__7.7팰린드롬검사기
__7.8모든곱구하기
____7.8.1여러데이터세트다루기
__7.9암호크래커
__7.10마무리
__7.11연습문제

8장해시테이블로매우빠른룩업
__8.1해시테이블
__8.2해시함수로해싱
__8.3재미와이익,특히이익을남길유의어사전만들기
__8.4해시테이블룩업
____8.4.1단방향(one-directional)룩업
__8.5충돌해결
__8.6효율적인해시테이블만들기
____8.6.1훌륭한충돌조정
__8.7해시테이블로데이터조직
__8.8해시테이블로속도올리기
____8.8.1배열부분집합
__8.9마무리
__8.10연습문제

9장스택과큐로간결한코드생성
__9.1스택
__9.2추상데이터타입
__9.3스택다뤄보기
____9.3.1코드구현:스택기반코드린터
__9.4제약을갖는데이터구조의중요성
____9.4.1스택요약
__9.5큐
____9.5.1큐구현
__9.6큐다뤄보기
__9.7마무리
__9.8연습문제

10장재귀를사용한재귀적반복
__10.1루프대신재귀
__10.2기저조건
__10.3재귀코드읽기
__10.4컴퓨터의눈으로바라본재귀
____10.4.1호출스택
____10.4.2스택오버플로
__10.5파일시스템순회
__10.6마무리
__10.7연습문제

11장재귀적으로작성하는법
__11.1재귀카테고리:반복실행
____11.1.1재귀트릭:추가인자넘기기
__11.2재귀카테고리:계산
____11.2.1두가지계산방식
__11.3하향식재귀:새로운사고방식
____11.3.1하향식사고절차
____11.3.2배열합
____11.3.3문자열뒤집기
____11.3.4X세기
__11.4계단문제
____11.4.1계단문제기저조건
__11.5애너그램생성
____11.5.1애너그램생성의효율성
__11.6마무리
__11.7연습문제

12장동적프로그래밍
__12.1불필요한재귀호출
____12.1.1max재귀분석
__12.2빅오를위한작은개선
__12.3재귀의효율성
__12.4하위문제중첩
__12.5메모이제이션을통한동적프로그래밍
____12.5.1메모이제이션구현
__12.6상향식을통한동적프로그래밍
____12.6.1상향식피보나치
____12.6.2메모이제이션대상향식
__12.7마무리
__12.8연습문제25613장속도를높이는재귀알고리즘
__13.1분할
____13.1.1코드구현:분할
__13.2퀵정렬
____13.2.1코드구현:퀵정렬
__13.3퀵정렬의효율성
____13.3.1한눈에보는퀵정렬
____13.3.2빅오로나타낸퀵정렬
__13.4퀵정렬의최악의시나리오
____13.4.1퀵정렬대삽입정렬
__13.5퀵셀렉트
____13.5.1퀵셀렉트의효율성
____13.5.2코드구현:퀵셀렉트
__13.6다른알고리즘의핵심역할을하는정렬
__13.7마무리
__13.8연습문제

14장노드기반자료구조
__14.1연결리스트
__14.2연결리스트구현
__14.3읽기
____14.3.1코드구현:연결리스트읽기
__14.4검색
____14.4.1코드구현:연결리스트검색
__14.5삽입
____14.5.1코드구현:연결리스트삽입
__14.6삭제
____14.6.1코드구현:연결리스트삭제
__14.7연결리스트연산의효율성
__14.8연결리스트다루기
__14.9이중연결리스트
____14.9.1코드구현:이중연결리스트삽입
____14.9.1앞과뒤로이동
__14.10이중연결리스트기반큐
____14.10.1코드구현:이중연결리스트기반큐
__14.11마무리
__14.12연습문제

15장이진탐색트리로속도향상
__15.1트리
__15.2이진탐색트리
__15.3검색
____15.3.1이진탐색트리검색의효율성
____15.3.2log(N)레벨
____15.3.3코드구현:이진탐색트리검색
__15.4삽입
____15.4.1코드구현:이진탐색트리삽입
____15.4.2삽입순서
__15.5삭제
____15.5.1자식이둘인노드삭제
____15.5.2후속자노드찾기
____15.5.3오른쪽자식이있는후속자노드
____15.5.4완전한삭제알고리즘
____15.5.5코드구현:이진탐색트리삭제
____15.5.6이진탐색트리삭제의효율성
__15.6이진탐색트리다뤄보기
__15.7이진탐색트리순회
__15.8마무리
__15.9연습문제34516장힙으로우선순위유지하기
__16.1우선순위큐
__16.2힙
____16.2.1힙조건
____16.2.2완전트리
__16.3힙속성
__16.4힙삽입
__16.5마지막노드탐색
__16.6힙삭제
__16.7힙대정렬된배열
__16.8다시살펴보는마지막노드문제
__16.9배열로힙구현하기
____16.9.1배열기반힙순회
____16.9.2코드구현:힙삽입
____16.9.3코드구현:힙삭제
____16.9.4대안구현
__16.10우선순위큐로쓰이는힙
__16.11마무리
__16.12연습문제

17장트라이(trie)해보는것도나쁘지않다
__17.1트라이
____17.1.1트라이노드
____17.1.2트라이클래스
__17.2단어저장
____17.2.1별표(asterisk)의필요성
__17.3트라이검색
____17.3.1코드구현:트라이검색
__17.4트라이검색의효율성
__17.5트라이삽입
____17.5.1코드구현:트라이삽입
__17.6자동완성개발
____17.6.1단어수집
____17.6.2재귀연습(walk-through)
__17.7자동완성마무리
__17.8값을포함하는트라이:자동완성업그레이드
__17.9마무리
__17.10연습문제

18장그래프로뭐든지연결하기
__18.1그래프
____18.1.1그래프대트리
____18.1.2그래프용어
____18.1.3기초그래프구현
__18.2방향그래프
__18.3객체지향그래프구현
__18.4그래프탐색
__18.5깊이우선탐색
____18.5.1깊이우선탐색연습
____18.5.2코드구현:깊이우선탐색
__18.6너비우선탐색
____18.6.1너비우선탐색연습
____18.6.2코드구현:너비우선탐색
____18.6.3깊이우선탐색대너비우선탐색
__18.7그래프탐색의효율성
____18.7.1O(V+E)
__18.8가중그래프
____18.8.1가중그래프코드
____18.8.2최단경로문제
__18.9데이크스트라의알고리즘
____18.9.1데이크스트라의알고리즘준비
____18.9.2데이크스트라의알고리즘단계
____18.9.3데이크스트라의알고리즘연습
____18.9.4최단경로찾기
____18.9.5코드구현:데이크스트라의알고리즘
____18.9.6데이크스트라의알고리즘의효율성
__18.10마무리
__18.11연습문제

19장공간제약다루기
__19.1공간복잡도의빅오
__19.2시간과공간트레이드오프
__19.3재귀에숨겨진비용
__19.4마무리
__19.5연습문제

20장코드최적화기법
__20.1전제조건:현재빅오파악하기
__20.2시작점:상상할수있는최상의빅오
____20.2.1상상의나래펼치기
__20.3룩업마법
____20.

출판사 서평

[대상독자]
●이제막기초프로그래밍을배웠지만컴퓨터과학기초를배움으로써더나은코드를작성하고프로그래밍지식과기술을키우고싶은개발자
●정규적인컴퓨터과학수업을받은적이없는독학개발자(또는공부했지만다까먹은개발자)면서자료구조와알고리즘의힘을활용해더확장가능하고간결한코드를작성하고싶은개발자
●자료구조와알고리즘을쉽고명확하게설명한교재를원하는컴퓨터과학도.어떤“고전적인”교재를사용하든이책을훌륭한보조교재로사용할수있다.
●경력상활용한적이거의없지만다가올기술면접시험을위해자료구조와알고리즘개념을복습해야하는개발자

[관련도서]
모두의알고리즘with파이썬
파이썬으로배우는자료구조핵심원리
알고리즘(개정4판)