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.5 O(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 마
2판에서 달라진 점
코딩 테스트에 출제 빈도가 높은 다이나믹 프로그래밍, 트라이(Trie에 대한 내용을 추가로 담았다. 재귀를 사용한 재귀적 반복과 속도를 높이는 재귀 알고리즘에 더해 재귀 알고리즘을 작성하는 방법에서는 문제의 유형에 따라 재귀 알고리즘을 작성하는 방법을 장으로 추가하고 자세한 전략을 담았다. 코딩 면접에서 자주 묻는 구현 알고리즘 개선 문제에 대한 항목을 최적화 주제로 보강했고, 각 장에는 더 연습할 수 있는 문제를 추가로 수록했다.
[대상 독자]
● 이제 막 기초 프로그래밍을 배웠지만 컴퓨터 과학 기초를 배움으로써 더 나은 코드를 작성하고 프로그래밍 지식과 기술을 키우고 싶은 개발자
● 정규적인 컴퓨터 과학 수업을 받은 적이 없는 독학 개발자(또는 공부했지만 다 까먹은 개발자면서 자료 구조와 알고리즘의 힘을 활용해 더 확장 가능하고 간결한 코드를 작성하고 싶은 개발자
● 자료 구조와 알고리즘을 쉽고 명확하게 설명한 교재를 원하는 컴퓨터 과학도. 어떤 “고전적인” 교재를 사용하든 이 책을 훌륭한 보조 교재로 사용할 수 있다.
● 경력상 활용한 적이 거의 없지만 다가올 기술 면접시험을 위해 자료 구조와 알고리즘 개념을 복습해야 하는 개발자
[저자 서문]
자료 구조와 알고리즘은 단순히 추상적인 개념이 아니다. 자료 구조와 알고리즘에 숙달하면 더 빠르게 실행되면서 메모리도 적게 소비하는 보다 효율적인 코드를 작성할 수 있다. 이는 모바일 플랫폼으로 넘어가며 갈수록 증가하는 데이터 크기를 감당해야 하는 오늘날의 소프트웨어 애플리케이션에서 특히 중요하다.
문제는 이러한 주제를 다루는 자료가 대부분 이해하기 어렵게 쓰였다는 점이다. 글은 수학 용어로 가득 차 있고 수학자가 아닌 이상 도무지 무슨 말인지 알기 어렵다. 심지어 “쉬운” 알고리즘을 표방하는 책마저 독자가 수학 석박사 학위를 취득했다고 가정한다. 결국, 무수한 독자들이 자신은 이러한 개념을 이해할 만큼 충분히 “똑똑하지” 않다고 생각하며 회피한다.
하지만 자료 구조와