500개가 넘는 예제와 문제로 코딩 인터뷰를 대비한 효율적인 문제 풀이 전략을 배운다!
효율적인 알고리즘 설계는 소프트웨어에서 아주 중요합니다. 그래서 모든 소프트웨어 회사의 코딩 인터뷰에서는 자료 구조와 알고리즘을 얼마나 아는지는 물론 지원자가 복잡한 문제를 자료 구조와 알고리즘을 이용해 어떻게 효율적으로 해결하는지를 살펴봅니다. 단지 아는 것을 넘어서 코딩 인터뷰에서 인정받고 소프트웨어 엔지니어로서 탁월한 능력을 발휘하려면 자료 구조와 알고리즘을 자유자재로 구사해야 합니다.
이 책은 코딩 인터뷰를 준비하는 사람을 대상으로 합니다. 앞부분에서는
여러 가지 자료 구조와 알고리즘에 대한 복잡도를 분석하고 뒷부분에서는 다양한 알고리즘 기법을 다룹니다. 또한, 각 주제에 맞춰 문제와 해결책을 제시하며, 연습 문제를 통해 완전히
이해하고 있는지 확인하게 합니다. 이 책은 C 언어로 해결책을
제시하지만, C 언어가 친숙하지 않더라도 구조체, 함수, 배열, 포인터, 재귀의
개념을 안다면 읽는 데 무리가 없습니다.
1부 코딩 인터뷰를 위한 기본 개념 익히기
1장 알고리즘 분석
_1.1 점근적 분석
_1.2 알고리즘 복잡도 분석
_1.3 시간 복잡도 예제
_1.4 마스터 정리
_1.5 배열 기반 문제
_1.6 재귀 함수
2장 알고리즘 문제를 풀기 위한 접근법
_2.1 제약 조건 분석
_2.2 아이디어 구상
_2.3 복잡도 계산
_2.4 코딩
_2.5 테스트
_2.6 코딩 인터뷰 예시
_2.7 정리
3장 추상 자료형과 자료 구조
_3.1 추상 자료형
_3.2 자료 구조
_3.3 배열
_3.4 연결 리스트
_3.5 스택
_3.6 큐
_3.7 트리
_3.8 힙
_3.9 해시 테이블
_3.10 딕셔너리와 심볼 테이블
_3.11 그래프
_3.12 정렬
_3.13 정리
4장 정렬
_4.1 정렬 유형
_4.2 정렬 알고리즘 비교
_4.3 정렬 문제
5장 검색
_5.1 왜 검색일까
_5.2 검색 알고리즘의 종류
_5.3 검색 문제
2부
자료 구조
6장 연결 리스트
_6.1 연결 리스트의 기본
_6.2 연결 리스트의 종류
_6.3 연결 리스트 문제
7장 스택
_7.1 스택의 추상 자료형
_7.2 시스템 스택과 함수 호출
_7.3 배열로 스택 구현하기
_7.4 연결 리스트로 스택 구현하기
_7.5 스택 문제
8장 큐
_8.1 큐의 추상 자료형
_8.2 배열로 큐 구현하기
_8.3 연결 리스트로 큐 구현하기
_8.4 큐 문제
9장 트리
_9.1 트리의 기본
_9.2 이진 트리
_9.3 이진 트리의 유형
_9.4 이진 트리 문제
_9.5 이진 탐색 트리
_9.6 이진 탐색 트리 문제
_9.7 이진 트리의 확장
10장 힙
_10.1 힙의 유형
_10.2 힙의 추상 자료형 연산
_10.3 힙 연산
_10.4 힙 정렬하기
_10.5 힙을 사용하는 곳
_10.6 힙 문제
11장 해시 테이블
_11.1 해시 테이블
_11.2 충돌 해결 기법
_11.3 해싱 문제
12장 그래프
_12.1 그래프 용어
_12.2 그래프 구현 방법
_12.3 그래프 순회
_12.4 그래프 문제
3부
고급 알고리즘
13장 문자열 알고리즘
_13.1 문자열 일치
_13.2 심볼 테이블과 딕셔너리
_13.3 문자열 문제
14장 알고리즘 설계 기법
_14.1 무차별 대입 알고리즘
_14.2 탐욕 알고리즘
_14.3 분할 정복과 부분 정복
_14.4 동적 계획법
_14.5 변환 정복
_14.6 백트래킹
_14.7 분기 한정
_14.8 A* 알고리즘
_14.9 정리
15장 무차별 대입 알고리즘
_15.1 버블 정렬
_15.2 선택 정렬
_15.3 순차 검색
_15.4 pow(a, n) 계산하기
_15.5 문자열 일치
_15.6 가장 가까운 두 점의 무차별 대입 알고리즘
_15.7 볼록 껍질 문제
_15.8 완전 탐색
_15.9 정리
16장 탐욕 알고리즘
_16.1 동전 교환 문제
_16.2 최소 신장 트리
_16.3 단일 출발 최단 경로의 데이크스트라 알고리즘
_16.4 최적 인코딩을 위한 허프만 트리
_16.5 작업 선택 문제
_16.6 배낭 문제
17장 분할 정복과 부분 정복
_17.1 일반 분할 정복의 반복
_17.2 병합 정렬
_17.3 퀵 정렬
_17.4 외부 정렬
_17.5 이진 검색
_17.6 제곱 함수
_17.7 볼록 껍질
_17.8 가장 가까운 두 점
18장 동적 계획법
_18.1 피보나치 수
_18.2 조립 라인 계획
_18.3 최장 증가 부분 수열
_18.4 최장 바이토닉 부분 수열
_18.5 연쇄 행렬 곱셈
_18.6 최장 공통 부분 수열
_18.7 동전 교환 문제
19장 백트래킹
_19.1 N 여왕 말 문제
_19.2 하노이의 탑
20장 복잡도 이론
_20.1 결정 문제
_20.2 복잡도 클래스
_20.3 정리
ㆍ지은이 헤먼자인
ㆍ옮긴이 이호진
독자의견 남기기