본문 바로가기

소프트웨어,IT,컴퓨터공학 도서리뷰/알고리즘 & 자료구조

자바로 배우는 핵심 자료구조와 알고리즘(Think Data Strucures) [ 3~4/7] [아쉬운 책]

이해는 구현을 이끌지만, 구현이 이해를 이끄는 것은 아니다.


 

추천도 : 3~4/7

★★★☆☆☆☆

Bottom-Up 방식. 둘 다 놓쳐버렸다.

 

읽은 기간 📅 : 2021년 7월 16일 ~ 8월 11일

 

이 책을 추천하는 이들 👨‍👧

  • 알고리즘을 공부하고자 하는 자바 개발자

 

난이도 🦈

 

관련된 책들 📚

None.

 

 

한 줄 평 ✍️

가끔 만나는 나와는 잘 맞지 않는 책.


나와는 어울리지 않는 책.

이 책은 Bottom-Up 방식으로 내용을 진행한다.

 

Bottom-Up 방식이란 실습에서 부딪혀보면서 이론과 관련된 내용을 이해해보는 것으로 매우 실용적인 접근 중 하나이다.

 

실제로 나의 경우에도 이론을 다 배우고 실습을 진행하는 것보다, 실습과 이론을 병행하면서 배우는 것이 더 많은 것을 남긴다. (체감상...)

 

그래서 책을 고를 때 이론과 실습이 적절하게 병행될 수 있는 책들을 선호하는 편이며, 이론적인 내용이 다분한 경우에는 꽤나 고생할 수 있는 고전적인 내용을 담은 책부터 접근하는 편이다. 

 

하지만 Bottom-Up 방식으로 진행하는 책들의 경우 정확한 맥을 짚지 않으면 이론과 실습을 둘 다 놓치게 될 수 있다.

 

나는 이 책이 딱 그러한 케이스라고 본다.

 

이 책은 간략하게 자료구조에 대한 요약적인 내용을 설명하고 (대부분의 내용은 API문서나 위키 페이지로 위임한다.)

 

저자가 제공하는 핵심 자료구조라 불리는 자바 파일의 특정 API 메서드를 채워야 하는 식이다.

 

구현이야 하겠지만, 정작 구현하고 나면 내가 이 자료구조와 알고리즘을 제대로 이해한게 맞는가? 하는 의문이 생긴다.

 

자료구조와 알고리즘은 땔레야 땔 수가 없는 관계이며 문제 도메인에 따라 적당한 자료구조를 택하게 되면 적당한 알고리즘도 택하기 마련이다.

 

그런데 이 책은 오로지 자료구조의 API메서드에만 집중한다.

 

즉 책의 제목에 적혀져 있는 핵심 자료구조와 알고리즘은 과대 포장한 게 아닌가 하는 생각이 든다.

 

실제 Java의 자료구조 라이브러리와 연계해서 제공한 자바 코드들은 훌륭하고, 내부의 코드를 들여다보면서 이를 응용한 구현은 군더더기 없이 깔끔해서 나의 구현과 정답을 비교해보면 혀를 내두르게 된다.

 

이 부분은 장점이지만, 이 책으로 자료구조와 알고리즘을 배운다고 보기엔 턱없이 부족하다는 생각이 든다.

 

이 책의 장점은 다음과 같다.

 

1. 자바의 라이브러리스러운 코드를 한 번 경험해볼 수 있다. (이를 안전하게 실행할 수 있는 테스트 코드도 제공해준다.)

 

2. 자신의 알고리즘에 대한 효율성을 체크해볼 수 있는 경험을 해볼 수 있다. (ch02 알고리즘 분석하기에서 알려준다.) 

 

3. 자신만의 HashMap을 만들어서 응용 분야에 적용해보는 실습을 진행해 볼 수 있다.

 

이 책의 단점은 다음과 같다.

 

1. 핵심 알고리즘 기법이라 할 수 있는 재귀, DP, BFS, DFS의 내용이 나오긴 하지만 매우매우 부족한 설명과 실습이다.

 

2. 대부분의 내용을 java API와 위키로 위임하는데 (이 점은 장단점이 있다. 독자로 하여금 필요한 정보를 잘 정리된 사이트에서 찾아보게 만드는 습관을 제공해줄 수 있다.) 저자의 요약적인 설명 이후 더 필요한 정보를 링크로 위임했어야 한다고 생각한다.

 

3. 웹 검색이라는 응용 분야를 자바로 구현하기엔... 너무도 난감한 주제가 아닌가 싶다.

 

자료구조와 알고리즘

 

최근에 취업준비를 하게 되면서 코딩 테스트를 준비하고 있다.

 

IT에 대한 대우가 좋아지면서 입사의 난이도도 높아졌고 바로 코딩 테스트에 반영되었다.

 

최근 트렌드는 인프라와 DB영역에 대한 기초지식, OS에 대한 지식들을 5지 선다로 풀게 한 다음

어려운 코딩 테스트 문제를 풀게끔 하는 것 같다.

 

그러다보니 자연스럽게 자료구조와 알고리즘에 대한 공부를 다시 진행해보게 되었다.

 

자바를 주 프로그래밍 언어로 삼는 나에게 좋은 책이 되어줄 거라 생각했는데... 기대한 만큼 실망감이 큰 책이었다.

 

작년 겨울에 읽었던 파이썬 코딩 인터뷰가 정말 친절하고 좋았던 책이라고 생각하게 되었다.

[ 코딩 인터뷰 완전 분석도 읽다가 도중에 그만두었다. ]

 

자료구조와 알고리즘을 학습하기 제일 좋은 방식은 실습이라는 것에는 동의 하지만 책의 방식대로 진행하는 것은 썩 좋아 보이진 않는다.

 

그래서 leetCode, HackerRank, 프로그래머스를 통해서 문제를 풀어보고 있다.

 

문제를 다 푼 후 나의 정답을 검토하고, 다른 이와의 답을 비교하면서 어떤 부분에서 아쉬웠는지를 검토해보고 있다.

 

이 책 이후로는 계속 웹 사이트에서 문제를 푸는 방식으로 진행할 생각이다.

[ 그게 가장 어렵고 힘들지만 가장 실용적인 접근이 아닌가 한다. ]


반응형