이미 소장하고 있다면 판매해 보세요.
|
옮긴이 머리말 ix
베타리더 후기 x 추천사 xii 머리말 xiv 감사의 글 xvi 이 책에 대하여 xviii CHAPTER 01 자료구조 소개: 왜 자료구조를 배워야 할까? 1 여러분을 환영한다 1 자료구조란 무엇인가? 3 왜 자료구조에 관심을 가져야 할까? 4 프로젝트에서 자료구조를 어떻게 사용할까? 8 요약 14 CHAPTER 02 정적 배열: 자료구조의 시작점 15 배열이란 무엇인가? 15 파이썬의 배열 21 배열에 대한 작업 23 배열의 실제 활용 28 요약 31 CHAPTER 03 정렬된 배열: 빠른 검색과 효율적 데이터 관리 33 정렬된 배열의 의미는 무엇일까? 33 정렬된 배열 구현 34 요약 41 CHAPTER 04 Big-O 표기법: 알고리즘 효율성의 기본 원리 43 어떻게 최선의 선택을 할 수 있을까? 43 Big-O 표기법 46 점근적 분석의 예 55 요약 59 CHAPTER 05 동적 배열: 크기를 유연하게 조절하는 자료구조 60 정적 배열의 한계 61 배열의 크기를 어떻게 늘릴 수 있을까? 63 트로피 진열장 63 배열의 크기도 줄여야 할까? 68 동적 배열 구현하기 71 요약 76 CHAPTER 06 연결 리스트: 유연한 동적 컬렉션 77 연결 리스트 vs. 배열 78 단일 연결 리스트 80 정렬된 연결 리스트 88 이중 연결 리스트 90 순환 연결 리스트 97 요약 100 CHAPTER 07 추상 자료형: 단순한 컨테이너의 설계 원리 102 추상 자료형 vs. 자료구조 103 컨테이너 108 가장 기본적인 컨테이너: 가방 110 요약 115 CHAPTER 08 스택: 데이터 처리를 위한 쌓기 구조 117 추상 자료형으로서의 스택 118 자료구조로서의 스택 121 연결 리스트 구현 124 이론과 현실 127 추가적인 스택의 응용 129 요약 133 CHAPTER 09 스택: 데이터 처리를 위한 쌓기 구조 117 추상 자료형으로서의 큐 134 자료구조로서의 큐 138 구현 144 동적 배열은 어떨까? 150 큐의 더 많은 응용 152 요약 153 CHAPTER 10 스택: 데이터 처리를 위한 쌓기 구조 117 우선순위를 통해 큐 확장하기 154 우선순위 큐를 자료구조로 사용하기 157 힙 160 힙 구현 163 우선순위 큐의 실제 활용 173 요약 175 CHAPTER 11 스택: 데이터 처리를 위한 쌓기 구조 117 트리란 무엇인가? 176 이진 탐색 트리 180 균형 잡힌 트리 192 요약 195 CHAPTER 12 딕셔너리와 해시 테이블: 연관 배열을 구축하고 사용하는 방법 196 딕셔너리 문제 197 딕셔너리를 구현하는 자료구조 199 해시 테이블 201 해싱 204 충돌 해결 206 요약 213 CHAPTER 13 그래프: 복잡한 관계를 효율적으로 모델링하기 214 그래프란 무엇인가? 214 그래프 구현 221 그래프 탐색 225 남은 단계 232 요약 233 찾아보기 235 |
|
이 책을 읽고 있다면, 아마도 우리가 흔히 말하는 ‘데이터 시대’에 살고 있다는 사실을 알고 있을 것이다. 이 시대에 데이터는 우리 삶에 없어서는 안 될 중요한 요소가 되었고, 기술 발전에 힘입어 정보의 생산 속도는 그 어느 때보다 기하급수적으로 증가하고 있다. 이 거대한 데이터의 흐름은 우리의 삶과 일, 서로 소통하는 방식까지 변화시키고 있다. / 이처럼 방대한 정보를 제대로 이해하고, 그에 압도당하지 않기 위해서는 정보를 효과적으로 구성하는 방법이 필요하다. 바로 여기서 자료구조가 등장한다. 자료구조는 컴퓨터나 프로그램이 정보를 저장하고 구성하는 방식으로, 데이터를 더 효율적으로 관리하고 조작할 수 있도록 도와준다.
--- p.3 많은 눈물과 투정 끝에 킴의 부모님은 마침내 킴의 새로운 트로피를 보관할 새로운 진열장을 제공하는 데 동의했다. 하지만 조건을 내걸었다. 기존의 진열장은 확장할 수 없고 폐기해야 하며, 새 진열장의 구입 비용과 기존 진열장의 폐기 비용을 킴의 저금통에 있는 돈으로 지불해야 한다는 것이다. 만약 그녀가 새 진열장을 살 돈이 부족하면, 그녀는 어쩔 수 없이 오래된 로봇 몇 대를 버려야 한다. / 그래서 킴은 장기적으로 최대한 돈을 아낄 수 있는 최적의 전략을 찾을 수밖에 없다(모듈형 가구를 사용하는 것은 어떨까 생각할 수도 있다. 그 말도 맞지만, 이 비유에서는 모듈형 설루션을 제공하지 않는다고 가정하자). --- p.64 팀은 자신의 첫 번째 비디오 게임을 개발 중이다. 그 게임을 잠시 살펴보면 주인공이 건물 안에서 왼쪽에서 오른쪽으로 움직이며 한 방에서 다른 방으로 이동하는 사이드 스크롤러 게임이다. 팀은 신중하게 방들을 설계하고, 각 방을 개별적으로 구현했다. 이제 방들 간의 진행 순서를 모델링하는 작업이 남아 있다. / ‘이걸 어떻게 하지?’ 팀은 고민했다. / 팀이 사용하는 프레임워크는 기본적으로 단일 연결 리스트를 제공하여 개발 시간을 꽤 많이 절약할 수 있다. 하지만 만약 단일 연결 리스트를 사용하면 게임 주인공은 오른쪽 방으로만 갈 수 있고, 뒤로 돌아갈 수는 없을 것이다. --- p.92 프리양카는 얼마 전 외부에서 보기엔 정말 멋있기 그지없는 스타트업에 입사했다. 그들의 사명은 그녀와 잘 맞았고, 창업자들이 개발한 AI 기술도 매력적이었다. 하지만 그녀는 핵심 기술 외에 회사의 인프라와 조직이 엉망이라는 사실을 꿈에도 몰랐다. 심지어 적절한 작업 관리 도구조차 없고, 버그 백로그는 그녀의 책상, 모니터, 그리고 작은 주방 테이블에 붙은 스티커 메모였다. / 그 말인즉 백로그를 ‘스크롤’한다는 것은 이러한 스티커 메모를 수집하고, 사무실 곳곳을 찾아다니며 필체를 해석하거나 누가 작성했는지 알아내는 것을 의미했다. 이런 상황에서는 버그를 고치는 것보다 버그를 놓치고 잊어버리는 것이 더 쉽다. 일주일 동안 버그 수정을 놓치고 적색 경고를 받은 프리양카는 더 이상 참을 수 없었다. --- p.137 마리오는 기억력이 좋지만, 이제 수백 장의 카드를 모았기 때문에 이미 소유하고 있는 카드와 없는 카드를 모두 기억하기가 어렵다. 특히 친구들과 카드를 교환할 때는 다른 사람이 카드를 가져가기 전에 재빨리 카드를 선택해야 하므로 더욱 그렇다. 경쟁에서 앞서기 위해 마리오는 카메라로 카드를 스캔하고 그 카드가 이미 자신의 컬렉션에 있는지, 몇 장을 가지고 있는지 몇 초 만에 확인할 수 있는 모바일 앱을 활용할 계획이다. / 이 앱의 핵심 기능--- p.UX와 객체 인식 외)은 바로 딕셔너리다. 딕셔너리는 특정 키로 데이터를 저장하고, 키를 기준으로 데이터를 검색한다. 야구 카드의 경우, 키로 선수 이름이나 심지어 카드의 사진을 사용할 수 있다. 이 예시에서 키는 소유한 카드의 복사본 수나 카드의 세부 사항(팀 정보, 통계 등)과 같은 속성과 연관될 수 있다. --- p.197 선거운동 매니저가 수집한 정보에 따르면 토끼는 소셜 네트워크의 스타이며, 토끼의 지지를 얻으면 선거 판도를 바꿀 수 있다. 호랑이 본부에서는 토끼가 친구 사슬에서 얼마나 떨어져 있는지 이해하고 싶어한다. 또한 호랑이와 토끼 사이의 최단 경로는 무엇인지 알고 싶어 한다. 계획은 호랑이의 친구 중 1명으로 시작해, 그 친구가 호랑이를 자신의 친구 중 1명에게 소개하고, 그 친구가 다시 호랑이를 자신의 친구에게 소개하는 식으로 진행해나가는 것이다. 이 과정을 토끼에게 도달할 때까지 반복하며, 경로가 짧을수록 관여하는 인원이 적어진다. / 너비 우선 탐색(.breadth-first search, BFS) 알고리즘은 정확히 이 작업을 수행한다. --- p.226 |
|
그림과 이야기로 풀어낸 가장 쉬운 자료구조 수업
프로그래밍 학습에서 자료구조는 빼놓을 수 없는 핵심 주제다. 그러나 막상 공부하려고 하면 어렵고 지루하다는 선입견이 따르곤 한다. 《쏙쏙 들어오는 자료구조》는 이러한 편견을 깨뜨리고, 누구나 자료구조를 재미있게 접할 수 있도록 해주는 자료구조 입문서다. 복잡한 수학 공식이나 추상적인 설명 대신, 생활 속 사례와 흥미로운 그림으로 자료구조의 개념을 풀어낸다. 배열, Big-O 표기법, 연결 리스트, 스택, 큐, 힙, 해시 테이블, 그래프, 이진 탐색 트리까지 필수 자료구조를 하나하나 체계적으로 학습하면서, 단순히 개념을 외우는 데서 그치지 않고 ‘왜 이 구조를 쓰는가?’, ‘어떤 상황에 적합한가?’라는 근본적인 질문에 답할 수 있도록 돕는다. 특히 트로피 진열장 정리, 야구 카드 검색, 박스 재고 관리, 응급실 환자 분류 등 실생활에서 접할 수 있는 친근한 비유는 독자가 개념을 자연스럽게 떠올리게 해주며, 직관적인 일러스트와 간결한 파이썬 코드가 더해져 곧바로 이해하고 실습할 수 있도록 구성했다. 이 책은 개발 입문자에게는 든든한 첫걸음이 되고, 실무자에게는 자료구조 감각을 다시 다지는 좋은 기회가 될 것이다. 코딩 테스트를 준비하는 학습자는 물론, 현업에서 자료구조를 제대로 활용하고 싶은 개발자에게도 든든한 길잡이가 되어줄 것이다. 더 이상 자료구조는 두렵지 않다. 그림과 이야기, 그리고 직접 실행 가능한 코드와 함께하다 보면 어느새 개발자의 기본 체력이 단단해지는 경험을 할 수 있을 것이다. 주요 내용 ● 배열, 연결 리스트, 큐, 스택 등 핵심 구조의 원리와 구현 ● 자료구조 선택 시 꼭 알아야 할 Big-O 표기법 ● 우선순위 큐와 힙으로 처리하는 복잡한 데이터 ● 검색이 쉬워지는 이진 탐색 트리와 균형 잡힌 트리 이해 ● 실무에서 자주 쓰는 해시 테이블과 그래프의 활용 ● 모든 예제를 파이썬으로 직접 구현하며 실습 |