brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Jun 03. 2024

(책) 읽고 나면 진짜 쉬워지는 자료 구조-2024

더 빠르고 효율적인 코드를 위해 꼭 알아야 할 CS 기초!


저자의 말

자료 구조를 통해 바라보는 계산적 사고의 책이다.

계산적 사고를 직관적으로 이해할 수 있도록 실생활 예시를 들어 설명한다.




이 책에서 도움 받을 수 있는 부분


<1> 데이터를 메모리에 저장하고 접근할 수 있게 해 준다.

<2> 문제정의와 선형스캔, 이진 탐색 개념을 배운다.

<3> 동적 자료 구조, 스택, 큐, 이진 탐색 트리 등을 배운다.

<4> 개인 정리.


길벗에서 책을  제공받아 작성된 서평입니다.



<1> 데이터를 메모리에 저장하고 접근할 수 있게 해주는 방법을 알려준다.



데이터에는 문서 안 텍스트, 웹 페이지 정보, 데이터베이스에 저장된 우리가 시음한 모든 커피의 종류와 그에 관련 정보들이 포함된다.

데이터를 메모리에 저장하는 기본 방법을 살펴본다.



1

변수

개별 데이터 조각을 종종 변수(Variable)에 저장한다.

간단한 프로그램조차 변수가 필수이다.



2

복잡한 자료 구조

다양한 프로그래밍 언어가 복합자료 구조를 만들 수 있는 기능을 제공한다.

예를 들어, 여러 개별 변수를 한 그룹으로 엮은 구조체나 객체가 복합 자료 구조에 속한다.

예를 들어 커피 종류에 대한 정보를 CoffeeRecord를 정의할 수 있다.


3

배열

배열은 관련된 다수의 값을 저장할 때 사용한다.

예를 들어, 1년간 매일 마신 커피의 양을 추적하고 싶다고 가정하다.

개별변수 365개를 만들어 사용가능하다.

배열은 여러 값을 연속적으로 인덱스가 부여된 상자에 저장하는 간단한 메커니즘을 제공한다.

일상생활에서도 사용한다.

고등학교 복도에 늘어선 사물함은 학생들의 책과 외투를 저장하는 물리적 배열이다.

우리는 개별 사물함을 열어 내부 공간에 쉽게 접근할 수 있다.



4

문자열

특수한 종류의 배열로 생각할 수 있는 순서가 지정된 문자의 리스트다.

문자열의 각 칸에는 문자, 숫자, 기호, 공백 또는 제한된 특수기호가 가능하다.



5

변수와 배열이 중요한 이유???

변수와 배열은 초급 프로그래밍 수업의 필수 요소이다.

프로그래밍과 자료 구조의 근간을 제공하는 개념이다.




<2> 문제정의와 선형스캔, 이진 탐색 개념을 배운다.



1

문제의 정의

새로운 알고리즘을 정의하기 전에 , 항상 그 알고리즘이 해결하려는 문제를 정의해야 한다.

일상에서 어떤 것을 찾아줘라고 표현한다.

사전에서 단어를 찾거나 연락처 목록에서 이름을 찾거나 역사적 사건 목록에서 특정 날자를 찾거나 상품으로 꽉 찬 슈퍼마켓 선반에서 좋아하는 커피 브랜드를 찾은 경우 등이 있다.

우리에게는 대상 목록과 목푯값의 일치 여부를 확인할 수 있는 방법이 필요하다.



2

선형 스캔?

선형 스캔 (linear scan)을 보자.

선형 스캔은 리스트에서 한 번에 하나씩 값을 목푯값과 비교하면서 목푯값을 찾거나 목록의 끝에 도달할 때까지 비교해 목푯값을 찾는다.

이 방법은 슈퍼마켓 선반에서 커피를 찾는 방법과 비슷하다.



3

이진 탐색 알고리즘?

이진 탐색은 정렬된 리스트에서 목푯값을 찾는 알고리즘이다.

정렬된 데이터에서만 작동한다.

알고리즘은 리스트를 반으로 분할하고 목푯값이 어느 쪽 절반에 속하는지 결한 한다.

그리고 목푯값이 포함되지 않는 절 받은 버리고 여전히 목푯값이 있을 수 있는 나머지 절반만 가지고 다시 같은 과정을 반복해 마지막 값만 남을떄가지 이를 반복한다.


이진 탐색 구현.


이진 탐색 적용하기.

완벽한 커피를 내려보자.

하계 = 0 큰술 , 커피는 따뜻한 물 한잔이다.

상계 = 5 큰술 , 커피가 너무 강하다.

중간 지점을 2.5 큰술로 정하고 커피를 검사하자.



<3> 동적 자료 구조, 스택, 큐, 이진 탐색 트리 등을 배운다.



동적 자료 구조 = 배열의 한계 = 크기와 메모리 레이아웃이 생성 시 고정된다.

스택과 큐에 대해 배운다.

이진 탐색트리 등 배운다.

트라이와 적응형 자료구조.

우선순위 큐와 힙

격자.

공간 트리.

해시 테이블.

캐시.

B-트리.

블룸필터.

스킵리스트.

그래프에 대해 배운다.




<4> 개인 정리.


더 빠르고 효율적인 코드를 위해 꼭 알아야 할 CS 기초를 배울 수 있다.


단순히 자료 구조의 종류를 나열하고 소개하는 책이 아니다.

어떻게 동작하는지 , 왜 이 자료구조가 중요한지 알려주는 책이다!




같이 보면 좋을 책

https://brunch.co.kr/@topasvga/3415


감사합니다.


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari