Think Data Structures 자바로 배우는 핵심 자료구조와 알고리즘 본문

Programming

Think Data Structures 자바로 배우는 핵심 자료구조와 알고리즘

halatha 2020. 12. 15. 00:25

최근 스타트업이 다시 인기를 얻고 AI가 (실제와는 다르게) 세상을 바꿀 듯 표현하는 기사들이 넘쳐나면서 개발자 인기가 좋아진 듯 보인다. 취업난과 함께 이런 현상들에 힘입어 비전공자들의 프로그래밍에 대한 관심이 높아지고, 이는 더 다양한 종류의 개발 입문서 출간으로 이어지지 않았을까 혼자 망상을 해봤다.

개발 입문서는 몇 가지 종류가 있겠지만 대표적인 예는 역시 자료구조와 알고리즘에 대한 책이다. 학부에서 초기에 배우는 필수 과목이기도 하고 이제는 사실상 표준이 된 프로그래밍 면접에서도 빠지지 않기 때문에 개발자라면 이에 대한 기본 지식은 필수이다(물론 필수다 아니다에 대한 논쟁은 예전부터 있어왔지만). 이 분야의 책은 교과서적인 경우, 여러가지 자료구조/알고리즘을 보통 pseudo code로 자세히 이론을 설명하는 매우 두꺼운 책(e.g. Introduction to Algorithm)과 실무 응용이나 면접을 위한 문제풀이에 더 치중하는 책(e.g. Cracking the coding interview)으로 아주 거칠게 나눌 수 있다.

이 책은 굳이 분류를 하자면 위의 두 책을 양 극단으로 볼 때 대충 중간 어디쯤에 있다고 생각한다. 즉 기초적인 부분에 대해서도 설명하지만 또 한편으로는 문제풀이는 아니지만 프로젝트에 적용할만한 코드를 설명을 하기도 한다. 이런 부분이 장점이자 단점으로 다가올 수 있는데, 여러가지 자료 구조를 알기 원하거나 자세한 원리를 원하는 사람에게는 불만족스러울 수 있으나, 당장 어딘가에 적용을 하기 원하고 빠른 시간 내에 바로 사용할만한 코드를 원하는 사람에겐 도움을 줄 수도 있기 때문이다.

저자는 이런 부분에 대해 대부분의 책이 너무 이론적이고, 분량이 많고, 동작 원리에만 치중한다는 생각을 했기 때문에 이 책을 썼다고 설명한다. 그래서 ArrayList, LinkedList, Doubly linked list, tree traverse, map, hashing, HashMap, TreeMap, binary search tree등의 자료 구조 개념 혹은 java collection library의 자료 구조를 위키피디아 크롤링 및 검색을 구현이라는 프로젝트와 결합해 설명한다. 아무런 사전 지식 없이 이런 목차를 보면 자료 구조 책인데 자료 구조와 크롤링 검색이 목차에 함께 있다는 점이 조금 의아할 수 있지만, https://flatironschool.com/이란 온라인 강의 사이트의 교육 과정에서 사용되는 책이라서 아마 어느 정도 완결성을 가진 프로젝트를 진행하기 위해 이런 구성을 택했을 거라 생각이 든다.

자료 구조/알고리즘을 제대로 배우기 위해서는 조금 불만족스러울 수 있으나, 기본을 빨리 익히고 사용하기 원하는 경우, 특히 java 사용자에게는 유용할 거 같다.

Ref.

yudong80/ThinkDataStructures
LaTeX source and supporting code for Think Data Structures: Algorithms and Information Retrieval in Java Data…github.com

 

Comments