* 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점을 뺀 이유는 점차 개념이 복잡해지는 뒤로 갈수록 오히려 설명이 부족해진다는 느낌을 받아서인데, 솔직히 너무 주관적인 느낌이라 정말 그런 지 확신할 수는 없다.
책의 부제처럼 정말 '상식으로 이해'할 수 있었다.
댓글