요즘 개발과 알고리즘 책들을 도서관에서 빌려서 읽고 있습니다.
주로 어떤 언어나 프레임워크, 라이브러리 혹은 알고리즘, 자료구조 등 같은
코딩과 관련된 키워드들을 도서관 홈페이지에서 검색해 나온 책의 제목들을 찾아내면,
그 제목들을 yes24와 같은 책 판매 사이트나 개인 블로그에서 다시 찾아봐서 올라온 후기들을 읽어보고
좋은 평가들을 받은 책들 위주로 우선 빌립니다.
그런데 이번에 읽은 '그림으로 배우는 알고리즘 Algorithm Basic'은
미리 조사해본 책들을 책꽂이에서 찾다가 우연히 발견하고 두께도 얇길래
한번 읽어나 볼까 하고 같이 빌려서 읽게 되었습니다.
2016년에 출간한 책이라 2021년에 읽기에는 너무 시간이 지나지 않았나 하는 생각이 들 수도 있습니다.
실제로 도서관에서도 희망 도서를 신청할 때, 일반 책들은 출판 시기, 신청 시기 차이가
5년 이내인 책인 경우 신청이 가능하지만,
컴퓨터와 관련된 책들은 2년 이내인 책들만 신청이 가능하게 돼있습니다.
하지만, 특정 언어의 문법이나 라이브러리, 프레임워크 등과 같은 특정 언어, 기술과는 다르게
자료구조와 알고리즘의 개념들은 말 그대로 근본 개념이라
엄청나게 특별한 알고리즘 구현 방법이 개발, 발견되지 않는 한,
몇 년이 지나도 크게 뒤집어지지 않습니다.
물론 최근에 나온 책들이 더 좋을 가능성이 있지만, 자료구조와 알고리즘에 관련된 책들은
출판 시기가 너무너무 차이가 나지 않는 이상, 읽어도 상관없다고 생각합니다.
책 내용에 대한 간단한 설명
책의 첫 부분에서는 각종 자료구조와 간단한 알고리즘들에 대한 설명에 들어가기 전에
알고리즘 개념에 대한 간단한 설명과 변수, 배열에 대한 설명들이 있습니다.
그 후에는 스택, 큐, 리스트, 배열 등과 같은 자료구조,
각종 문제들을 해결하는 기본적인 알고리즘 그리고 버킷 정렬, 기수 정렬, 버블 정렬 등과 같은 정렬과
순차 검색, 이진 검색 등과 같은 검색, 알고리즘의 계산량에 대한 설명들이 담겨 있습니다.
다만, 코딩 테스트에서 사용되는 C++, 자바 혹은 파이썬 등과 같은 언어로
알고리즘을 만드는 코드에 대해서는 단 한 줄도 나와있지 않습니다.
무작정 코드부터 밀어부치기 보다는 자료구조, 알고리즘에 처음 입문하는 사람들의 부담감을 줄여주기 위해
그림으로 찬찬히 설명해주는 느낌인 책입니다.
장점과 약간 아쉬운 점은 지극히 개인적인 의견입니다.
한 눈으로 읽고 한 눈으로 흘려보시는 것을 권장합니다.
장점
1. 가볍게 읽기 좋습니다.
자료구조, 알고리즘 안의 기본 개념들을 어느 정도 다루는데도 페이지 수가 174로 책이 두껍지 않습니다.
얇은 책이지만, 위의 책 내용에 대한 간단한 설명에서 말했듯이, 다루는 개념이 적은 것도 아닙니다.
개념을 설명할 때도 개념 자제만을 가르쳐줄 뿐, 코드를 다루지는 않기 때문에
처음 입문하는 사람들도 부담 없이 읽을 수 있습니다.
2. 각 개념마다 그림 설명이 있습니다.
특정 개념 하나하나마다 그림을 그려서 쉽게 설명합니다.
중간의 쉬어가기 코너인 column을 빼면
책을 펼쳤을 때, 왼쪽 페이지에는 어떤 개념에 대한 글 설명이 있고,
오른쪽 페이지에는 왼쪽 페이지에서 설명한 개념에 대한 그림 설명으로 책이 구성되어 있습니다.
자료구조은 특정 자료구조가 어떻게 생겼는지 그리고 어떻게 데이터가 들어오고 나가는지에 설명을,
알고리즘은 특정 알고리즘이 어떻게 진행되는지에 대한 설명을
글로만 구구절절 설명하면 입문하는 사람들에게는 직관적으로 이해하기 어려울 수 있는데,
각 개념마다 그림을 넣어줘서 더 직관적으로 이해할 수 있습니다.
아쉬운 점
1. 개념에 대해서'만' 다루는 책입니다.
자료구조, 알고리즘을 코드로 구현할 수 있어야 하는데 코드는 전혀 없습니다.
자료구조와 알고리즘을 공부하고자 하는 사람은 전공자, 비전공자 구분 없이
취미로 개발을 하는 사람이 아닌 직업으로써 개발자의 길을 걸을 사람이라고 생각되므로
언젠가는 각종 자료구조와 알고리즘을 구현한 코드에 부딪혀야 합니다.
그래서 책 제목에 있는 basic처럼 자료구조와 알고리즘을 처음 접하는 사람들에게는 좋은 책이지만,
이미 다른 책이나 자료로 공부하고 있었다면 굳이 읽을 필요는 없다고 생각합니다.
그런 사람들은 굳이 읽고 싶다면 그냥 가볍게 한 번 훑어보는 것을 추천합니다.
만약 어떤 분이 시간이 없어서 자료구조, 알고리즘에 대한 책을 딱 한 권 정도만 읽을 시간밖에 없다면
이 책보다는 코드와 개념이 같이 담긴 책을 찾아서 읽어야 할 것입니다.
추천하고 싶은 대상
아직 자료구조나 알고리즘 과목을 배우기 전인 컴퓨터 전공생 1, 2학년들 혹은
개발자로 취업을 해야 되는데 코딩 테스트에 막연한 두려움을 가진 사람들 등처럼
자료구조와 알고리즘 개념에 처음 입문하는 사람들에게 추천하는 책입니다.
하지만, 이미 자료구조와 알고리즘에 대해 어느 정도 공부해서 백준, 프로그래머스와 같은 알고리즘 문제 사이트에서
어떤 문제를 읽고 무슨무슨 알고리즘을 적용해서 문제를 풀 수 있는 정도의 실력을 갖추신 분들에게는 비추천합니다.
그리고 취업을 위해 코딩 테스트를 준비하는 사람들에게도 이 책에 나오는 기본 개념들은 중요하지만,
그리드 알고리즘, 다이나믹 프로그래밍 등과 같은 좀 더 심화된 내용도 필요하기 때문에
이 책 하나만으로는 코딩 테스트를 통과하기에는 많이 부족 내용일 것이라
코딩 테스트 준비 기간이 얼마 없는 사람이라면 비추천합니다.
그런 사람들은 이 책 보다 더 심화된 내용이 있는 책과 자료들을 공부하는 것이 낫다고 생각합니다.
※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.
댓글