본문 바로가기
Learnings/개발독서록 📖

<누구나 자료 구조와 알고리즘> 책 리뷰

by abcdesong 2021. 2. 12.

* 2020년 11월 15일에 작성한 velog 글을 옮겨왔습니다.


0. 독서 배경

자료 구조알고리즘에 대한 배경 지식이 전혀 없는 문과생 필자가 최대한 쉽게 입문하고자 택한 서적이다.

주 공부 언어인 Swift가 아닌 Ruby, Python, Javascript로 예문이 쓰여 있지만, 이를 감안하더라도 설명이 쉬우며 깊은 수학적 지식을 요하지 않아서 구매하게 되었다.

 

1. 서적 기본 정보

 

✍️ 제이 웬그로우 지음 | 심지현 옮김 | 길벗 | 2018.06.30 출간
📖 308쪽 | 16,000 원

🔎 상세 정보 보기

 

2. 독서 방법

🗓 독서 기간: 2020.11.09 ~ 2020.11.14

독서를 시작한 날 6장까지 읽고 이후 2장씩 나눠 읽었다.

처음 6장은 개괄적 내용 위주라 하루에 읽기에 무리가 없었고, 이후엔 구체적 예시와 함께 이해해야할 부분이 꽤 되어 나눠 읽는 것이 효과적이었다.

워낙 설명이 자세하고 기초 개념에 초점이 맞춰져 있다 보니 이해하기 위해 추가로 검색해야하는 시간 비용은 전혀 들지 않았다.

 

3. 수확

🌾 자료 구조와 알고리즘에 대한 기본 이해

자료 구조알고리즘이 왜 중요하고, 서로 어떤 관계에 있는지 이해하게 되었다.

알고리즘을 공부하기 전 자료 구조를 공부하면 좋다고 하는 말의 의미와 왜 두 가지가 같이 논해지는지 알게 되었다.

특정 알고리즘을 구현할 때 합이 잘 맞는 자료 구조가 존재하며, 알맞은 조합을 통해 코드의 효율성이 좌지우지 된다는 사실을 알게 되었다.

특히, 흔히 쓰던 1차원 배열에서 셀이 추가되거나 삭제될 때 자료 구조 차원에서 어떠한 프로세스가 일어나는지 시각적으로 배울 수 있어서 유익했다.

🌾 빅 오 표기법의 개념

코딩테스트 사이트를 둘러볼 때 종종 접하던 O(N) 등의 표기가 무엇을 의미하는지 알게 되었다.

빅 오 표기는 알고리즘에 필요한 단계 수만을 고려하는 계산이며 최악의 시나리오를 기준으로 표기한다는 것을 배웠다.

적절한 예시를 통해 O(1), O(logN), O(N) 등의 차이에 대해 이해할 수 있었다.

🌾 몇몇 자료 구조, 알고리즘에 대한 학습

해시 테이블, 스택, 트리그래프자료 구조. 그리고 그에 맞게 사용될 수 있는 각종 정렬법, 이진 탐색, 재귀 등의 알고리즘이 어떻게 작동하는지 배울 수 있었다.

기본 개념부터 심화 개념, 코드로 알아보기까지 단계적으로 서술되어 있어 이해의 범위를 넓힐 수 있었다.

🌾 시간 복잡도와 공간 복잡도에 대한 이해

대부분의 챕터는 시간 복잡도에 초점을 맞춘 효율성을 논하고 있으며 마지막 챕터에서 공간 복잡도에 대한 내용을 다룬다.

공간 복잡도에 대한 서술은 비교적 많지 않았지만, 앞서 상세히 다룬 시간 복잡도를 바탕으로 이해하기 용이했다.

 

4. 놓친 점

😕 예문에 대한 이해

필자는 Swift 언어를 주로 사용하고 있기 때문에 책을 구매하기 전에도 우려되었던 부분이긴 했다.

해당 도서의 예문은 Ruby, Python, Javascript로 쓰여 있고, 그 중에서도 Ruby의 비중이 크다.

학교 통계 수업을 통해 잠시나마 다뤄본 적이 있는 Python과 생활코딩 수강 경험이 있는 Javascript 예문은 거의 이해했는데, Ruby 이해는 막히는 부분이 꽤 많았다.

특히 11장 노드 기반 자료 구조 이후의 코드들이 더 그랬다.

물론 시간을 들여 Ruby를 학습하면 되었겠지만 아직 Swift도 초심자인 입장이라 딴 길로 새는 것은 부담이 되었다.

😕 구체적인 구현법

위의 문제와 연결되는 부분인데, Swift로 구현 시 어떻게 해야하는지에 대해선 많이 알게되지 못했다.

초반 챕터들에선 알고 있는 문법으로 구현해볼 수 있었지만, 역시 뒤로 갈수록 어려웠다.

이 역시도 시간을 들여 찾아보면 될 일이나 애초에 이 서적으로는 입문 정도만 할 생각이었기에, 필자는 이미 구매를 마쳐 추후 접하게 될 <스위프트 데이터 구조와 알고리즘>을 통해 심화 공부를 하려고 한다.

 

5. 총평

⭐️ 별점: 4.5 / 5

전반적으로 매우 만족한 책이다.

0.5점을 뺀 이유는 점차 개념이 복잡해지는 뒤로 갈수록 오히려 설명이 부족해진다는 느낌을 받아서인데, 솔직히 너무 주관적인 느낌이라 정말 그런 지 확신할 수는 없다.

책의 부제처럼 정말 '상식으로 이해'할 수 있었다.

댓글