티스토리 뷰

Hobby/Book

[Book] 파이썬으로 배우는 자료구조 핵심 원리

생각많은 소심남 2021. 10. 31. 22:11

(해당 포스트에서 소개하고 있는 "파이썬으로 배우는 자료구조 핵심 원리" 책은 길벗출판사로부터 제공받았음을 알려드립니다.)

 

파이썬으로 배우는 자료 구조 핵심 원리

핵심 개념과 동작 원리로 이해하는 자료 구조

www.gilbut.co.kr

대학교를 졸업하고 나서, 후회한 일 중 하나는 자료구조론 수업을 게을리들었던 것이다. 마침 같이 수업듣던 동아리형이 수업듣는 것을 많이 도와주셨지만, 지금 돌이켜보면 그때 스스로 이해를 하려고 노력하고, 과제를 풀려고 노력했으면 적어도 스스로 프로그래밍하는 것에는 어려움이 없었을 것 같다.

말은 이렇게 했지만 자료구조는 개발하는데 있어서 거의 필수적인 지식 중 하나이다. 물론 요새는 프레임워크 자체가 잘되어 있어, API 하나 딱 쓰면 원하는 출력물을 얻을 수 있긴 하지만, 그 성능을 개선하고, 원하는 것이 나오지 않을때 디버깅을 하기 위해서는 자료구조에 나온 내용을 기반으로 구현하고 성능 평가를 할 수 있어야 한다. 특히나 요새 대부분의 회사에서는 코딩테스트를 기반으로 인원을 채용하기도 하고, 진급시에도 이런 프로그래밍 역량을 평가 요건으로 삼고 있다. 그래서 서점에도 가보면 정말 다양한 자료구조 책, 코딩테스트 준비용 책들을 많이 판매하고 있다.

이번에 소개할 책은 파이썬 기반의 자료구조를 다룬 책이다.

파이썬으로 배우는 자료 구조 핵심 원리

사실 책을 막상 받아보면, 생각보다 얇다는 느낌을 받을 수 있다. 대학교에서 다루는 C로 구현한 자료구조론 책이나 알고리즘 책들은 막 분권해서 가지고 다닐만큼 책이 굉장히 두꺼운데 비해, 이 책은 300페이지도 안되는 분량을 통해서 LinkedList, Stack, Queue, Graph 같은 자료구조부터 여러 트리, 그래프 알고리즘들에 대한 소개, 그리고 마지막으로 실제 현업에서 활용되고 있는 사례에 대해서 소개하고 있다. 기본적인 파이썬 문법에 대한 설명이 없고, 바로 자료구조 내용을 다루고 있기 때문에 아무래도 기본적인 문법은 알고 있다는 것을 전제로 두고 있다. 자세한 내용은 다음과 같다.

  • 재귀 함수
  • 성능 분석
  • 배열
  • 연결리스트
  • 스택, 큐, 덱
  • 그래프
  • 트리
    • 이진 탐색 트리
    • 레드 블랙 트리
    • B트리
    • 힙과 우선순위 큐
  • 그래프 알고리즘 응용
    • 위상 정렬
    • 최소 비용 신장 트리
    • 최단 경로
  • 사례

 그래도 이 책이 좋았던 부분은 자료구조와 알고리즘에 대해서 그림과 예제 코드를 통해서 간결하게 설명하고, 모든 자료구조를 추상화 형태로 구현한다는 점이었다. 그래서 코딩을 직접하기 전에 앞서 ADT를 통해서 기능에 필요한 함수들을 구현하는 식으로 내용이 진행된다. 아무래도 클래스 형태로 구현되다보니 해당 자료구조를 재사용해야 한다던가, 아니면 사용자가 원하는 기능을 추가하고자 할때도 원활하게 할 수 있기 때문에, 조금더 이해에 도움이 되며, 어떻게 보면 파이썬이 추구하는 객체지향 프로그래밍을 충실히 따르고 있다.

힙과 우선순위 큐에 대한 설명

 너무 핵심 원리만 살펴본 것 아니냐고 할 수 있는데, 오히려 고급 자료구조에 대해서 빠르게 구현해보고 내용을 이해할 수 있도록 잘 응축되어 있다는 느낌을 받았다. 그래서 만약 파이썬을 사용한 코딩 테스트를 준비하는 사람이라면 유용한 내용들이 담겨있다고 생각한다.

서두에서 이야기했지만, 시중에는 정말 다양한 자료구조나 알고리즘 책들이 나와있고, 각 책들이 초점을 맞추고 있는 독자나 수준도 역시 천차만별이다. 이 책은 빠르게 파이썬으로 구현할 수 있는 자료구조와 선행 알고리즘에 대해서 살펴볼 수 있게끔 되어있기 때문에, 이런 목적으로 찾는 사람에게는 유용한 책이 되지 않을까 생각된다.

참고)

github에 예제들이 올라가있기 때문에 책이 없더라도 내용에 대해서 빠르게 살펴보고자 하는 사람은 참고하면 좋을 것 같다.

 

GitHub - gilbutITbook/080200

Contribute to gilbutITbook/080200 development by creating an account on GitHub.

github.com

 

댓글