청구할인 안내(인터파크 제휴카드) | 안내
삼성카드 3% (3만원 이상 결제/최대 1만원 할인)
북피니언 롯데카드 30% (최대할인 3만원 / 3만원 이상 결제)
하나SK 북&카드 30% (최대할인 3만원 / 3만원 이상 결제)
EBS 롯데카드 20% (최대할인 3만원 / 3만원 이상 결제)
인터파크 NEW 우리V카드 10% (최대할인 3만원 / 3만원 이상 결제)
인터파크 현대카드 7% (최대할인 3만원 / 3만원 이상 결제)
Close

2013년 9월 9일 이후 누적수치입니다.

스위프트 데이터 구조와 알고리즘 : 프로그래밍의 튼튼한 기초

원제 : Swift Data Structure and Algorithms
판매지수 325
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
정가

30,000원

  • 27,000 (10%할인)

    1,500P (5%적립)

  • 중고판매

    이 책을 인터파크에
    판매하세요

배송정보
주문수량
감소 증가
  • 이벤트/기획전

  • 연관도서(262)

  • 사은품(2)

책소개

프로그래밍의 튼튼한 기초

데이터 구조와 알고리즘은 문제를 해결하기 위한 패턴이라 할 수 있으며, 이를 잘 활용하면 어려운 문제를 간단하면서도 세련되게 해결할 수 있다. 반면, 데이터 구조에 대한 명확한 이해가 없다면 현대 프로그래밍 언어의 특징이라 할 수 있는 다양한 데이터 타입의 장단점을 파악하기 어려우며, 어떤 상황에서 어떤 데이터 구조를 사용해야 할지 판단할 수 없고, 결국 프로그램의 성능 문제로 남게 된다.
이 책은 스위프트 표준 라이브러리에서 제공하는 코어 데이터의 구조와 알고리즘, 큐, 스택, 리스트, 해시 테이블 등 보편적으로 사용되는 데이터 구조와 알고리즘을 소개한다. 또한 다양한 정렬 알고리즘의 개요를 소개하고 각 알고리즘 성능의 장단점과 데이터 입력 크기에 따른 성능 차이를 비교 분석한다. 스위프트 언어를 통해 구현할 수 있는 다양한 트리 데이터 구조와 알고리즘, 고급 검색 기법을 설명하고, 알고리즘의 성능과 효율성을 한눈에 파악할 수 있는 그래프 구현 방법을 소개한다.
이 책의 목적은 데이터 구조와 알고리즘을 통해 모두들 해결이 어렵다고 말하는 문제에서 패턴 또는 실마리를 찾고, 이를 바탕으로 일상적인 개발 업무에서 즉각적으로 활용할 수 있는 다양한 해법 또는 응용 프로그램을 떠올리게 하는 것이다.

출판사 서평

이 책에서 다루는 내용

- 스위프트의 기본적인 데이터 구조에 대한 개념 정리
- 스위프트 표준 라이브러리 컬렉션과 오브젝티브C 컬렉션의 브릿징 기법과 프로토콜 지향 프로그래밍
- 스위프트 반복기와 시퀀스의 개념과 고급 데이터 구조에서의 활용 방법
- 다양한 데이터 정렬 알고리즘의 구현 및 장단점 비교
- 이진 트리, 이진 검색 트리, 스플레이 트리 구현 및 B-트리 등 고급 트리의 작동 원리 분석
- 레드-블랙 트리, AVL, 트라이 트리 등을 활용한 고급 검색 메소드 구현
- 깊이 우선 검색, 너비 우선 검색, 미니멈 스패닝 트리, 최단 경로 등의 그래프 알고리즘 구현

이 책의 대상 독자

스위프트 언어를 이용해 데이터 구조와 알고리즘을 구현하는 방법을 익히고자 하는 개발자를 위한 책이다. 컴퓨터 과학을 전공한 개발자는 물론, 스위프트에 대한 실무 경험 없이 스위프트에 대해 공부하고 있는 개발자도 큰 어려움 없이 최신 버전의 스위프트 언어로 고급 데이터 구조와 알고리즘 구현 방법을 익힐 수 있도록 구성했다.
이 책에 실린 대부분의 예제 코드는 모바일 환경은 물론, 서버 환경에서도 문제 없이 작동하도록 만들어졌다. 독자 여러분이 객체지향 프로그래밍에 대한 사전 지식과 경험이 있다면 전반적인 내용을 좀 더 쉽게 이해할 수 있겠지만, 객체지향 프로그래밍을 잘 모르는 독자라 하더라도 가장 기본이 되는 내용부터 설명하므로 큰 어려움 없이 기본 개념을 익히고 예제 코드를 실행해 볼 수 있으리라 생각한다.

이 책의 구성

1장, '플레이그라운드 살펴보기'에서는 데이터 구조와 알고리즘, 스위프트 REPL에 대한 개요를 소개하고, 커맨드라인 환경에서 스위프트 명령어를 입력하고 실행하는 방법에 대해 설명한다.
2장, '스위프트 기본 데이터 구조의 활용'에서는 클래스와 구조체, 배열, 딕셔너리, 세트 컬렉션 타입 구현을 위한 상세한 방법을 소개하고, 스위프트에서 오브젝티브C와 C 시스템 라이브러리를 활용하는 방법, 그리고 프로토콜 지향 프로그래밍 기법에 대해 설명한다.
3장, '스위프트 고급 데이터 구조의 활용'에서는 스위프트 프로토콜에의 부합 방법, 스택과 큐 구현 방법, 애플리케이션의 개발 요구 사항에 따른 올바른 타입의 선택 및 구현 방법에 대해 설명한다.
4장, '정렬 알고리즘 알고리즘의 개요와 정렬'에서는 알고리즘에 대해 소개하고, 배열 데이터 구조를 이용해서 정렬 알고리즘을 구현하는 방법에 대해 알아본다. 또한, 비교 정렬 기법 등 새로운 알고리즘을 소개하고, 단순 정렬 기법과 분리-정복 전략의 차이에 대해서도 설명한다.
5장, '나무를 통해 숲을 보기'에서는 트리 데이터 구조의 정의와 프로퍼티에 대해 소개하고, 이진 트리, 이진 검색 트리, B-트리, 그리고 스플레이 트리 등, 다양한 트리의 구현 방법에 대해 상세히 알아본다.
6장, '고급 검색 메소드'에서는 고급 트리 구조인 레드블랙 트리, AVL 트리, Trie 트리(Radix 트리)에 대해 소개하고, 서브스트링 검색 알고리즘 구현 방법에 대해서도 알아본다.
7장, '그래프 알고리즘'에서는 그래프 이론과 그래프를 위한 데이터 구조, 깊이 우선 검색, 너비 우선 검색, 스패닝 트리, 최단 경로, SwiftGraph에 대해 알아본다.
8장, '알고리즘의 성능과 효율성'에서는 알고리즘의 효율성의 개념을 소개하고 여러분이 만든 알고리즘의 효율성을 측정하는 방법과 Big-O 표기법, Big-O 함수의 순서, 실행 시간 복잡성의 개념에 대해 설명한다.
9장, '내게 꼭 맞는 알고리즘 선택하기'에서는 현실적인 복잡한 문제를 해결하기 위해 데이터 구조와 알고리즘을 설계하는 방법과 이를 스위프트 코드로 구현하는 방법에 대해 소개하고, 실제 상황에서 우리가 만든 알고리즘이 정상적으로 작동할 때 Big-O 표기법으로 복잡성을 측정하는 방법에 대해 알아본다. 마지막으로 병목 구간의 측정 및 감지, 성능 개선을 위한 코드 수정 기법에 대해서도 알아본다.

지은이의 말

이 책은 실무 경험을 쌓은 개발자가 최신 버전의 스위프트를 활용할 수 있도록 돕는다. 스위프트는 애플이 만든 macOS, iOS, watchOS, tvOS, 리눅스 프로그래밍을 위한 언어이며, 스위프트를 이용해서 신속하고 안전하게 소프트웨어를 구현할 수 있다.
이 책에서 배운 내용을 바탕으로 애플리케이션을 좀 더 효율적으로, 좀 더 확장성 높게 만들 수 있다.
편안한 마음으로 이 책을 읽어나가길 바라며, 스위프트의 고급 기능에 대한 이해도 넓혀나가길 바란다. 무엇보다도 애플리케이션 코드 중 일부를 수정해서 극적인 성능 개선을 이뤄낼 수 있는 비법 또한 찾아내기 바란다.

옮긴이의 말

최근 10여 년 사이, 인공지능과 빅데이터, 소셜과 모바일 서비스의 폭발적인 성장과 함께 프로그래밍을 배워야 한다는 사회 분위기가 강하게 조성되고 있다. 웹 2.0 시대에 사는 우리 대부분은 어떤 면에서는 모두 프로그래머이자 코더라고 할 수 있지만, 국내외 정부와 교육기관은 프로그래밍 로직을 작성하는 일을 전문 직업으로 택할 수 있는 수준을 강조하고 있다. 만일 프로그래머가 되는 것에 대해 진지하게 고민한 적이 있다면, 그 첫 번째 단추를 어디서부터 꿸 것인가가 무척 중요할 것이다. 그리고 이미 프로그래머로 활동하고 있다면, 전문가로서의 깊이를 얻기 위해 많은 노력을 하고 있을 것이다.
쿡북을 펴 들고 웹 기반, 혹은 모바일 기반의 애플리케이션을 만들어서 배포해보는 것도 좋은 방법이고, 개발 환경을 설치한 뒤 해당 플랫폼의 예제 코드를 실행해보거나 오픈소스 라이브러리를 다운로드 받아서 개발 문서의 스터디를 시작하는 것도 좋은 접근 방식이지만, 이런 과정을 거칠수록 프로그래밍에 대한 근원적인 궁금증이 커지기 마련이다. 오픈소스 시대에 사는 우리 대부분은 표면에 있는 모듈과 API를 가지고 프로그래밍 혹은 코딩을 시작하지만 시간이 지날수록 그 아래 감춰져 있는 요소를 발굴하고 차츰 더 아래에 있는 프로그래밍의 기단부 혹은 코어를 향해 내려가게 되는 것이다.
이 책에서 다루고 있는 데이터 구조와 알고리즘이 바로 여러분이 찾던 프로그래밍의 기단부이자 코어라고 할 수 있다. 모든 프로그램은 데이터 구조 혹은 알고리즘이라는 소박한 토대 위에 쌓아 올려진 건축물이라 할 수 있으며, 오픈소스 커뮤니티의 아버지라 할 수 있는 에릭 레이먼드(Eric S. Raymond)의 일갈처럼 우수한 데이터 구조는 곧 우수한 프로그램을 판단하는 척도라 할 수 있다.
현대 프로그래밍 언어 대부분은 서로의 장단점을 관찰하고 비교 분석해서 다양한 기능을 담은 모듈과 라이브러리를 지속적으로 배포 및 업데이트한다. 스위프트는 여러 언어 가운데서도 지난 3년 사이 가장 큰 변화를 만들고, 많은 주목을 받아온 프로그래밍 언어라 할 수 있다. 무려 30년간 애플이라는 플랫폼의 기본 언어였던 오브젝티브C를 대체할 목적으로 만들어진 스위프트는 클로저, 제너릭, 타입 추측, 다중 반환 타입, 네임스페이스 등 최신 프로그래밍 속성을 반영했으며, 문법의 간결성과 활용 가능성 측면에서 데이터 구조와 알고리즘을 익힐 수 있는 훌륭한 언어다.
프로그래밍 전문가에게도 데이터 구조와 알고리즘은 부담스러운 주제일 수 밖에 없다. 그 속에는 어쩔 수 없이 프로그래밍에 대한 근원적이면서도 낯선 물음이 포함돼 있기 때문이다. 하지만 약간의 어색함을 참을 용기만 있다면, 예제 코드를 확인해볼 수 있는 시간 여유만 있다면, 이 책에 포함된 내용 대부분을 편안하게 넘겨볼 수 있을 것이다. 대부분의 예제 코드는 그리 길지 않으며, 신속하게 알고리즘의 개요를 파악하고 활용 방안에 대해 생각할 수 있도록 돕는다.
iOS, macOS 애플리케이션을 만들고자 하는 개발자, 이미 다수의 애플리케이션을 배포했지만 프로그래밍에 대한 근원적인 궁금증을 품고 있는 개발자, 그리고 이미 완성된 알고리즘의 성능을 혁신적으로 개선할 방법을 찾고 있는 시스템 개발자에게 데이터 구조와 알고리즘 측면에서의 이해를 돕고 그 해법을 제시한다.

동준상

목차

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: 블룸 필터 기법
정리

저자소개

에릭 아자르(Erik Azar) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

지난 20년간 스타트업부터 포춘 500대 기업에 이르는 다양한 기업을 위해 네트워크 엔지니어링, 시스템 관리, 보안, 기업 비즈니스 서비스 분야에서 확장성을 겸비한 고성능 데스크톱, 웹과 모바일 애플리케이션 설계 및 개발 업무를 담당해온 컴퓨터 과학자다. 애플이 아이폰을 공개했던 2007년, 처음으로 WWDC에 참가한 이후 다양한 macOS와 iOS 애플리케이션을 개발해 왔다.
플로리다 주 잭슨빌에 있는 Availity, LLC의 개발자이자 아키텍트로서, 헬스케어 산업을 위한 각종 소프트웨어 솔루션을 개발하고 있으며, 팩트출판사의 기술 감수자로서 [RESTful 자바 웹 서비

펼쳐보기
마리오 에귈루즈 알레빅토(Mario Eguiluz Alebicto) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

개발 업계에서 잔뼈가 굵은 10년 차 소프트웨어 엔지니어다. 자바 개발자로 입문했으나 아이폰의 세계를 접한 뒤 오브젝티브C 개발자가 됐으며, 현재는 스위프트 언어를 함께 사용한다. 소상공인과 지역 사업자를 위한 모바일 애플리케이션 개발 스타트업을 설립했으며, 2011년 이후 신생 스타트업부터 포춘 500대 기업에 이르기까지 다양한 클라이언트의 애플리케이션을 개발해 왔다. 현재는 모바일 애플리케이션을 개발하는 프리랜서이자, 저술가, 강사로 활동 중이다.
개발 외에도 여행을 좋아하고, 새로운 것을 배우거나 스포츠를 즐기며 하드코어 게이머로서 다양한

펼쳐보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

넥스트플랫폼 대표이자 ICT 컨설턴트로 서비스 기획, UX 표준화 프로젝트에 참여해왔으며, AWS 테크놀로지 파트너로 클라우드 기반 서비스와 데이터 분석 애플리케이션을 개발한다. 삼성전자, 한국생산성본부, KT, 신한은행, 국민은행, 신세계 등에서 현대 ICT 서비스 기획론, UX 리서치 전략, SPRINT 방법론을 강의하고, 관련 교재를 집필했다. 한국콘텐츠진흥원, 한국생산성본부, 대구디지털산업진흥원, 부산정보진흥원의 기술 심사위원 및 멘토로 활동 중이다.
번역서로는 에이콘출판사에서 펴낸 [jQuery UI 1.8 한국어판](2012), [The iOS 5 Developer's Cookbook (Thi

펼쳐보기

이 상품의 시리즈

acorn+PACKT 시리즈(총 282권 / 현재구매 가능도서 263권)

펼쳐보기

리뷰

0.0 (총 0건)

등록된 리뷰중 당선작을 선정하여, 도서상품권을 드립니다.

리뷰쓰기

기대평

작성시 유의사항

평점
0/200자
등록하기

기대평

0.0

교환/환불

교환/환불 방법

‘마이페이지 > 취소/반품/교환/환불’ 에서 신청함, 1:1 문의 게시판 또는 고객센터(1577-2555) 이용 가능

교환/환불 가능 기간

고객변심은 출고완료 다음날부터 14일 까지만 교환/환불이 가능함

교환/환불 비용

고객변심 또는 구매착오의 경우에만 2,500원 택배비를 고객님이 부담함

교환/환불 불가사유

반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가할 수 있음
배송된 상품의 분실, 상품포장이 훼손된 경우, 비닐랩핑된 상품의 비닐 개봉시 교환/반품이 불가능함

소비자 피해보상

소비자 피해보상의 분쟁처리 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 따라 비해 보상 받을 수 있음
교환/반품/보증조건 및 품질보증 기준은 소비자기본법에 따른 소비자 분쟁 해결 기준에 따라 피해를 보상 받을 수 있음

기타

도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 주문이 취소될 수 있음(이 경우 인터파크도서에서 고객님께 별도로 연락하여 고지함)

배송안내

  • 인터파크 도서 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다

  • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

  • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능하여, 인터파크 외 타업체 배송상품인 경우 발송되지 않을 수 있습니다.

  • 배송비

도서(중고도서 포함) 구매

2,000원 (1만원이상 구매 시 무료배송)

음반/DVD/잡지/만화 구매

2,000원 (2만원이상 구매 시 무료배송)

도서와 음반/DVD/잡지/만화/
중고직배송상품을 함께 구매

2,000원 (1만원이상 구매 시 무료배송)

업체직접배송상품 구매

업체별 상이한 배송비 적용