스위프트 데이터 구조와 알고리즘 에릭 아자르 pdf 다운로드를 무료로 제공합니다 데이터 구조와 알고리즘은 문제를 해결하기 위한 패턴이라 할 수 있으며, 이를 잘 활용하면 어려운 문제를 간단하면서도 세련되게 해결할 수 있다
관련 책 pdf 모음
책 소개
스위프트 언어를 이용해 데이터 구조와 알고리즘을 구현하는 방법을 익히고자 하는 개발자를 위한 책이다. 컴퓨터 과학을 전공한 개발자는 물론, 스위프트에 대한 실무 경험 없이 스위프트에 대해 공부하고 있는 개발자도 큰 어려움 없이 최신 버전의 스위프트 언어로 고급 데이터 구조와 알고리즘 구현 방법을 익힐 수 있도록 구성했다. 이 책에 실린 대부분의 예제 코드는 모바일 환경은 물론, 서버 환경에서도 문제 없이 작동하도록 만들어졌다. 독자 여러분이 객체지향 프로그래밍에 대한 사전 지식과 경험이 있다면 전반적인 내용을 좀 더 쉽게 이해할 수 있겠지만, 객체지향 프로그래밍을 잘 모르는 독자라 하더라도 가장 기본이 되는 내용부터 설명하므로 큰 어려움 없이 기본 개념을 익히고 예제 코드를 실행해 볼 수 있으리라 생각한다. 이 책은 실무 경험을 쌓은 개발자가 최신 버전의 스위프트를 활용할 수 있도록 돕는다. 스위프트는 애플이 만든 macOS, iOS, watchOS, tvOS, 리눅스 프로그래밍을 위한 언어이며, 스위프트를 이용해서 신속하고 안전하게 소프트웨어를 구현할 수 있다. 이 책에서 배운 내용을 바탕으로 애플리케이션을 좀 더 효율적으로, 좀 더 확장성 높게 만들 수 있다. 편안한 마음으로 이 책을 읽어나가길 바라며, 스위프트의 고급 기능에 대한 이해도 넓혀나가길 바란다. 무엇보다도 애플리케이션 코드 중 일부를 수정해서 극적인 성능 개선을 이뤄낼 수 있는 비법 또한 찾아내기 바란다.
스위프트 데이터 구조와 알고리즘
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: 블룸 필터 기법
__정리