스위프트 데이터 구조와 알고리즘
도서명:스위프트 데이터 구조와 알고리즘
저자/출판사:에릭,아자르,마리오,에귈루즈,알레빅토/에이콘출판
쪽수:344쪽
출판일:2017-06-29
ISBN:9791161750170
목차
1장. 플레이그라운드 살펴보기
__데이터 구조의 중요성
____데이터 구조 + 알고리즘 = 프로그램
____상호작용성 높은 플레이그라운드
____스위프트 REPL
__기본적인 데이터 구조
____인접 데이터 구조
________배열
________배열 선언
________배열 요소 가져오기
________배열 요소 추가
________배열 요소 삭제
____연결 데이터 구조
________단일 연결 리스트
__데이터 구조의 종류와 장단점
____알고리즘 개요
__스위프트에서의 데이터 타입
____밸류 타입과 레퍼런스 타입
____기명 타입과 복합 타입
____타입 알리아스
____스위프트 표준 라이브러리의 컬렉션 타입
__점근적 분석
____데이터 크기 분석 방법 - 성장의 순서
__정리
2장. 스위프트 기본 데이터 구조의 활용
__스위프트 표준 라이브러리의 활용
____애플이 구조체를 사용하는 이유
____스위프트에서 배열 선언
________배열 초기화
________배열에 요소 추가 및 업데이트
________배열에서 요소 가져오기 및 삭제
____딕셔너리 가져오기 및 초기화하기
________딕셔너리 초기화하기
________키/값 쌍 추가, 변경, 삭제
________딕셔너리에서 값 가져오기
____세트 선언
________세트 초기화
________세트 요소 변경 및 가져오기
________세트 연산자
____튜플의 특징
________무기명 튜플
________기명 튜플
__서브스크립팅 구현
____서브스크립트 문법
____서브스크립트 옵션
__수정 가능 속성과 수정 불가 속성의 이해
____컬렉션의 수정가능 속성
__스위프트와 오브젝티브C의 상호관련성
____초기화 방식
____스위프트 타입의 호환성
____컬렉션 클래스 브릿징
________NSArray를 Array로 브릿징
________NSSet을 set로 브릿징
________NSDictionary를 dictionary로 브릿징하기
__스위프트 프로토콜 지향 프로그래밍
____명령 전달을 위한 디스패치 기법
____프로토콜 작성 문법
____타입으로서의 프로토콜
____프로토콜 익스텐션
____컬렉션에서 활용하기 위한 프로토콜의 검증
________Array 리터럴 문법
________열거형 배열 만들기
__정리
3장. 스위프트 고급 데이터 구조의 활용
__반복기, 시퀀스, 컬렉션
____반복기
________시퀀스
____컬렉션
__스택
____애플리케이션 개요
____구현 방법
____프로토콜
__큐
____애플리케이션 개요
____구현 방법
____프로토콜
__순환 버퍼
____애플리케이션 개요
____구현 방법
____프로토콜
__우선순위 큐
____애플리케이션 개요
____구현 방법
____프로토콜
__스택 리스트
____애플리케이션 개요
____구현 방법
____프로토콜
__정리
4장. 정렬 알고리즘
__삽입 정렬 알고리즘
____알고리즘 개요
____삽입 정렬 알고리즘 분석
____삽입 정렬 알고리즘 활용 사례
____최적화
__병합 정렬 알고리즘
____배열 기반 병합 정렬 알고리즘
____병합 정렬 알고리즘 분석
____연결 목록 기반 병합 정렬 알고리즘 분석
____알고리즘 성능 비교
__신속 정렬 알고리즘
____로무토의 신속 정렬 알고리즘
____로무토의 파티션 스킴 분석
____호어의 신속 정렬 알고리즘
____호어의 파티션 스킴 분석
________피봇 선택 방식
____신속 정렬 알고리즘을 위한 개선된 피봇 선택 방식
____최적화
__정리
5장. 나무를 통해 숲을 보기
__트리: 정의와 주요 속성
__다양한 트리의 종류와 개요
____이진 트리
____이진 검색 트리
____B 트리
____스플레이 트리
____레드블랙 트리
__이진 트리
____타입과 종류
____코드
__이진 검색 트리
____노드 삽입
____트리 워크(순회 방식)
________인오더 트리 워크
________프리오더 트리 워크
________포스트오더 트리 워크
____검색
____삭제
__B 트리
__스플레이 트리
____스플레이 작업
________지그 회전
________지그지그 또는 재그재그 회전
________지그재그 회전
__정리
6장. 고급 검색 메소드
__레드블랙 트리
____레드블랙 트리 노드의 구현
____회전
________우측 회전
________좌측 회전
____삽입
__AVL 트리
____AVL 트리 노드의 구현
____AVL 트리 회전
________좌측 단순 회전
________단순 우측 회전
________우-좌 이중 회전
________좌-우 이중 회전
__검색
____삽입
__Trie 트리
__Radix 트리
__다양한 서브스트링 검색 알고리즘
____서브스트링 검색 알고리즘 사례
________나이브(브루트 포스) 알고리즘
________Rabin-Karp 알고리즘
__정리
7장. 그래프 알고리즘
__그래프 이론
____보편적으로 활용되는 그래프의 유형
________무방향성 그래프
________방향성 그래프
________가중치 그래프
____그래프의 표현 방식
________객체지향 접근법: 구조체와 클래스 활용
________이웃 목록
________이웃 매트릭스
________근접 매트릭스
__데이터 구조
____꼭지점
____모서리
____이웃 목록
__깊이 우선 검색
__너비 우선 검색
__스패닝 트리
____미니멈 스패닝 트리
__Prim 알고리즘
__최단 경로
__다이크스트라 알고리즘
____SwiftGraph
__정리
8장. 알고리즘의 성능과 효율성
__알고리즘의 효율성
____최상, 최악, 그리고 평균의 경우
__효율성 측정과 Big-O 표기법
____점근적 분석
________복잡성 계산 방식
__일반적인 함수의 복잡성 순서
____O(1)
____O(log(n))
____O(n)
____O(nlog(n))
____O(n^2)
____O(2^n)
________Big-O 그래프 비교
__런타임 복잡성의 평가
__정리
9장. 내게 꼭 맞는 알고리즘 선택하기
__URL 단축기
____긴 URL 문제
____URL 단축기 구현 전략
____스위프트로 구현하는 URL 단축기
________구현 기법 1: 올바른 튜플 찾기
________구현 기법 2: 인덱스값으로 올바른 배열 위치에 바로 접근하기
__대규모 데이터의 검색
____대규모 블랙리스트 문제
____대규모 블랙리스트 검색 문제의 해법
____스위프트로 구현하는 대규모 블랙리스트 검색 알고리즘
________구현 기법 1: 기본적인 대규모 블랙리스트 검색
________구현 기법 2: 블룸 필터 기법
__정리