책 소개
컴퓨터를 전공하는 학생들에게 자료구조는 아무리 강조해도 지나치지 않을 만큼 중요한 전공과목이다. 컴퓨터 전공의 근간이 되는 프로그래밍 언어를 잘 이해하고 있더라도 자료구조에 대한 기본지식 없이 실제 응용을 위한 효율적인 소프트웨어를 작성하는 것은 거의 불가능하기 때문이다. 이는 한글을 배우자마자 시나 소설을 쓸 수 없는 것과 같은 이치이다.
C언어, C++언어 혹은 자바 언어들은 컴퓨터 분야 전공자들에게 있어 반드시 익혀야 할 언어이지만 오히려 언어 자체가 장벽이 되어 자료구조의 이해를 어렵게 만드는 경우가 종종 발생한다.
하지만 파이썬은 다른 언어들과는 달리 컴퓨터의 기본 지식 없이도 쉽게 프로그래밍을 할 수 있고 이러한 파이썬의 쉬운 접근성은 자료구조에 대한 이해를 보다 쉽게 만들 수 있다는 타 프로그램 언어와 차별화된 장점을 가지고 있다. 이 책은 파이썬 언어로 자료구조의 기본 개념을 이해하고 궁극적으로 실세계에서 어떤 문제와 마주하더라도 효율적으로 문제를 해결하는 프로그램을 작성할 수 있게 만드는데 그 목적이 있다.
이 책은 필자가 지난 30여 년간의 강의 경험을 바탕으로 자료구조의 이해에 있어 가장 기본적이고 공통된 부분을 발췌, 정리된 주제와 동시에 최신 주제인 좌편향(Left-Leaning) 레드 블랙트리, Tim Sort와 이중피벗퀵정렬(Dual Pivot Quick Sort)을 포함하고 있으며, 대부분의 자료구조에 대해 파이썬으로 구현된 프로그램을 제공한다. 본서는 연결리스트, 스택, 큐, 트리 앞 부분 등은 기본적인 개념 위주로 설명하고, 자료구조의 핵심이라 할 수 있는 탐색트리, 해싱, 정렬, 그래프에 대해 보다 상세히 다루며, 최신 자료구조를 추가로 소개한다.
이 책의 주요 특징
독자들의 쉬운 이해를 위해 본서는 대부분의 자료구조를 다음의 다섯 단계에 따라 설명한다.
1. 주어진 자료구조에 대한 이해
2. 핵심 아이디어 소개
3. 예제
4. 파이썬 프로그램
5. 수행시간 분석
기본적으로 각 자료구조의 필요성을 소개하고, 자료구조를 이해하는데 도움이 되는 핵심 아이디어를 살펴본다. 또한 자료구조에 대한 예제를 통해 이해를 도우며, 파이썬(Python 3) 프로그램으로 구현한 자료구조를 제시하고, 수행시간을 분석한다. 아울러 자료구조의 응용 및 활용 분야를 살펴보고, 대부분의 파이썬 프로그램을 Eclipse 통합 개발 환경에서 실제로 실행시킨 결과 화면 또한 보여준다. 단, 몇몇 자료구조들에 대한 프로그램은 너무 길어 생략하였고 개념 위주로 서술하였다.
이 책의 주요 내용
제1장 자료구조를 배우기 위한 준비
자료구조와 추상 데이터 타입, 수행시간의 분석, 수행시간의 점근 표기법, 파이썬 언어의 기본 지식, 그리고 순환에 대해 살펴본다. 단, 본서에서 다루는 파이썬 언어의 기본 지식은 본서에 제공된 파이썬 프로그램을 이해하기 위해 필요한 파이썬의 일부 구문, 함수 등만을 포함하고 있다.
제2장 리스트
단순연결리스트, 이중연결리스트, 원형연결리스트를 설명한다.
제3장 스택과 큐
스택, 큐, 데크 자료구조를 다룬다.
제4장 트리
일반적인 트리, 이진트리, 이진트리에서의 순회 및 기타 기본적인 연산, 이진힙을 각각 소개한다.
제5장 탐색트리
이진탐색트리, AVL 트리, 2-3트리, 레드블랙트리, B-트리를 소개하며, 특히 이진탐색트리, AVL 트리는 파이썬 프로그램을 통하여 상세히 설명한다.
제6장 해시 테이블
해시함수, 출동 해결 방법으로 선형조사, 이차조사, 랜덤조사, 이중해싱, 체이닝을 배우고, 새로운 충돌 해결방식인 2-방향 체이닝(Two-Way Chaining), 뻐꾸기 해싱(Cuckoo Hashing)을 소개하며, 재해싱과 동적해싱을 각각 살펴본다.
제7장 정렬
기본적인 정렬알고리즘인 선택정렬, 삽입정렬을 다루고, 이보다 효율적인 쉘정렬, 합병정렬, 퀵정렬, 힙정렬을 살펴보며, 특정 환경에서 사용되는 기수정렬과 외부 정렬을 소개한다. 또한 비교적 최근에 소개되었고 자바의 시스템 정렬로 활용되는 이중피벗퀵정렬(Dual Pivot Quicksort)과 파이썬, 자바 SE7, 안드로이드의 시스템 정렬로 채택된 Tim Sort는 부록에서 소개한다.
제8장 그래프
깊이우선탐색, 너비우선탐색을 공부하고, 기본적인 그래프 알고리즘인 연결성분 찾기와 위상정렬에 대해 살펴본다. 또한 Kruskal, Prim, Sollin의 최소신장트리 알고리즘을 소개하고, Dijkstra와 Floyd-Warshall 최단경로 알고리즘을 소개한다.
부록
파이썬 메모리를 살펴보며, 이중피벗퀵정렬(Dual Pivot Quick Sort)과 Tim Sort를 살펴보며, 정렬 문제의 하한을 알아보고, 최소신장트리 알고리즘들이 항상 정확한 해를 리턴하는 지를 Cut Property의 증명을 통하여 알아본다.
작가 소개
저 : 양성봉
연세대학교 공과대학, 학사
University of Oklahoma, 컴퓨터과학, 석사
University of Oklahoma, 컴퓨터과학, 박사
현재 연세대학교 컴퓨터과학과 교수
목 차
1.1 자료구조와 추상데이터타입
1.2 수행시간의 분석
1.3 수행시간의 점근표기법
1.4 파이썬 언어에 대한 기본적인 지식
1.5 순환
연습문제
CHAPTER 02 연결리스트
2.1 단순연결리스트
2.2 이중연결리스트
2.3 원형연결리스트
연습문제
CHAPTER 03 스택과 큐
3.1 스택
3.2 스택의 응용
3.3 큐
3.4 데크(Deque)
연습문제
CHAPTER 04 트리
4.1 트리
4.2 이진트리
4.3 이진트리의 연산
4.4 이진힙
연습문제
CHAPTER 05 탐색트리
5.1 이진탐색
5.2 이진탐색트리
5.3 AVL 트리
5.4 2-3 트리, 레드블랙트리
5.5 B-트리
연습문제
CHAPTER 06 해시테이블
6.1 해시테이블
6.2 해시함수
6.3 개방주소방식
6.4 폐쇄주소방식
6.5 기타 해싱
6.6 해시방법의 성능 비교 및 응용
연습문제
CHAPTER 07 정렬
7.1 선택정렬
7.2 삽입정렬
7.3 쉘정렬
7.4 힙정렬
7.5 합병정렬
7.6 퀵정렬
7.7 기수정렬
7.8 외부 정렬
연습문제
CHAPTER 08 그래프
8.1 그래프
8.2 그래프 탐색
8.3 기본적인 그래프 알고리즘
8.4 최소신장트리
8.5 최단경로 알고리즘
연습문제
부록
Ⅰ. 파이썬 메모리
Ⅱ. 이중피벗퀵정렬
Ⅲ. Tim Sort
Ⅳ. 정렬의 하한
Ⅴ. Cut Property
- 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
- 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
반품사유 | 반품 배송비 부담자 |
---|---|
단순변심 | 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다. |
고객 부담이 아닙니다. |
진행 상태 | 결제완료 | 상품준비중 | 배송지시/배송중/배송완료 |
---|---|---|---|
어떤 상태 | 주문 내역 확인 전 | 상품 발송 준비 중 | 상품이 택배사로 이미 발송 됨 |
환불 | 즉시환불 | 구매취소 의사전달 → 발송중지 → 환불 | 반품회수 → 반품상품 확인 → 환불 |
- 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
- 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
결제수단 | 환불시점 | 환불방법 |
---|---|---|
신용카드 | 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) | 신용카드 승인취소 |
계좌이체 |
실시간 계좌이체 또는 무통장입금 취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준) |
계좌입금 |
휴대폰 결제 |
당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소 전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준) |
당일취소 : 휴대폰 결제 승인취소 익월취소 : 계좌입금 |
포인트 | 취소 완료 후, 당일 포인트 적립 | 환불 포인트 적립 |
- 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
- 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
- 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
- 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
- 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
- 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.
상품군 | 취소/반품 불가사유 |
---|---|
의류/잡화/수입명품 | 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우 |
계절상품/식품/화장품 | 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 |
가전/설치상품 | 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.) |
자동차용품 | 상품을 개봉하여 장착한 이후 단순변심의 경우 |
CD/DVD/GAME/BOOK등 | 복제가 가능한 상품의 포장 등을 훼손한 경우 |
상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우 | |
노트북, 테스크탑 PC 등 | 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우 |