상세정보
[epub3.0]누구나 자료 구조와 알고리즘
- 저자
- 제이 웬그로우
- 출판사
- 길벗
- 출판일
- 2018-06-30
- 등록일
- 2020-07-15
- 파일포맷
- EPUB
- 파일크기
- 0
- 공급사
- 교보문고
- 지원기기
-
PC
PHONE
TABLET
프로그램 수동설치
뷰어프로그램 설치 안내
책소개
사칙연산과 지수로만 이해하는 자료 구조와 알고리즘
수학 용어와 전문 용어가 아니어도 이해한다
이 분야의 책은 대부분 컴퓨터 공학 전공자를 대상으로 쓰였거나 고등학교 수학을 잘 안다고 가정하고 있다. 쉽게 설명했다는 책도 전문 용어로 가득하다. 비전공자나 수학적 기초가 약한 독자는 전문 용어에 두려움을 느끼며 이 주제를 이해할 만큼 자신이 똑똑하지 않다고 느끼며 이 주제를 회피한다. 그러나 자료 구조와 알고리즘은 대부분 상식선에서 이해할 수 있다. 상식이 통하는 설명으로 자료 구조와 알고리즘을 이해해보자.
프로그래밍의 핵심 스킬을 이해한다
자료 구조와 알고리즘은 프로그래밍의 핵심 스킬이다. 더 빠른 코드, 더 효율적인 코드를 작성하려면 반드시 알아야 하는 사고 방식이 자료 구조와 알고리즘에 담겨 있다. 추상적인 개념만 설명하는 대신 실생활에서 마주할 수 있는 상황을 제시하며 자료 구조와 알고리즘을 적용하는 방법을 보여준다. 자료 구조와 알고리즘은 개념만 이해하면 어떤 언어로도 구현할 수 있다는 것도 보여준다. 이 책에서는 자바스크립트, 루비, 파이썬으로 된 예제를 제시한다.
자료 구조와 알고리즘을 선택하는 방법을 배운다
전공 교재는 자료 구조와 알고리즘을 암기하고 시험만 볼 뿐이다. 입사 면접에서는 어떤 문제를 두고 배열, 연결 리스트, 해시 중에 무엇을 선택해야 하는지, 왜 그게 최적의 방법인지 묻는다. 자료 구조를 선택하는 방법, 선택한 자료 구조가 코드의 성능에 어떤 영향을 미치는지 설명하므로 암기된 단편적인 지식이 아닌 연결된 지식을 가르치고, 입사 면접을 준비할 때도 참고할 수 있게 했다.
저자소개
저자 : 제이 웬그로우
저자 : 제이 웬그로우
저자 제이 웬그로우
세상을 코딩하는 법을 가르치는 데 전념하고 있는 전문 교육자이자 개발자이다. 코딩 부트캠프와 실습을 가르치는 Actualize의 설립자이자 CEO이다. "누구나 코딩할 수 있다(Anyone Can Learn To Code)"라는 교육 회사에서 온라인으로 코딩을 가르치고 있으며, 고등학교 컴퓨터 과학 커리큘럼, 기업체 교육 훈련을 운영하고 있다.
역자 : 심지현
역자 심지현
이화여대 컴퓨터공학과를 졸업하고, KAIST 대학원 전산과에서 데이터베이스 전공으로 석사 학위를 취득했다. 데이터베이스 외에 온톨로지(Ontology), 개인화 검색 등을 연구했으며 졸업 후 네이버에서 검색 서버 설계 및 개발 실무 경험을 쌓다가 현재는 검색 연구실에서 검색 모델링과 추천 시스템 관련 연구를 진행 중이다.
목차
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 마치면서