파이썬 자료구조와 알고리즘

 

파이썬 자료구조와 알고리즘

파이썬 자료구조와 알고리즘

미아 스타인 저/최길우

기초 튼튼, 핵심 쏙쏙, 실력 쑥쑥 파이써닉한 코딩으로 배우는 핵심 알고리즘 이 책은 파이썬을 십분 활용해 필수적인 자료구조와 알고리즘을 두루 살펴본다. 스택, 큐, 연결 리스트 등 추상 데이터 타입과 정렬, 검색, 동적 계획법, 그래프, 트리 등 개발자가 꼭 알아야 할 알고리즘 핵심을 짚는다. 모든 알고리즘은 파이...

 

 

파이썬의 기초적인 부분을 배웠다면 학부 2학년, 3학년이 되면 이제 자료구조와 알고리즘에 대해 배우게 된다. 수많은 데이터 즉 자료들이 구조적으로 형성되어 있고 좀 더 효율적이고 관리가 쉽고 다루기 쉽게 만드는 것이 자료구조라는 과목이다. 이러한 자료들을 좀 더 신속하고 부하없이 처리하고 연산하는 방법이 알고리즘이다. 따라서 일반적으로 자료구조와 알고리즘을 같은 연장선에서 많이 알고 있으며, 이 책 또한 그러하다.

 

첫번째 구성은 자료구조이다. 넘파이 패키지를 통해 정수 및 복소수와 같은 숫자 자료형에 대해 알아본다. 내장 자료형인 문자열과 튜플, 리스트, 딕셔너리 등에 대해서도 배운다. 각 챕터가 마무리되면 연습문제가 몇 가지 있어 간단히 확인해볼 수 있다.  파이썬의 자료형은 일반적인 언어의 자료형과는 다소 다르다는 것을 알 수 있다. 우리가 일반적으로 아는 배열이 파이썬에서는 리스트이고, 변경할 수 없는 리스트를 튜플, 인덱스를 지정할 수 있는 자료형을 딕셔너리라고 한다. 

 

챕터5부터는 객체지향 설계를 비롯한 파이썬 고급 주제에 대해 다루게 된다. 데커레이터, 옵서버, 싱글턴 패턴과 같은 디자인 패턴에 대해 다루며, 6장에서는 멀티 프로세스와 멀티 스레드 및 디버깅, 단위테스트 등 중급자 이상 나아가기 위한 내용들을 담았다. 

 

파트2부터는 이제 추상 데이터 타입에 대해 다룬다. 스택, 큐, 힙, 해시 테이블 등 일반적인 학부 수업시 배우는 자료구조를 파이썬을 통해 구현해본다. 이러한 자료구조가 정의되면 마찬가지로 나오는 것이 시간복잡도이다. 각 자료구조에 따른 시간복잡도를 알아보고 특히 자료의 순서를 결정하는 정렬 알고리즘에 대해 다양한 알고리즘, 버블 정렬, 선택 정렬, 삽입 정렬 등 각 알고리즘별로 시간복잡도를 알아본다. 

 

파트3은 그래프와 트리의 세계를 다룬다. 그래프는 점에서 점으로 가는 경로를 그려놓은 자료구조이다. 형태에 따라 부분 그래프, 완전 그래프, 가중 그래프 등이 있다. 이러한 그래프는 인접 리스트 및 인접 행렬로 변환할 수 있다. 우리가 일반적으로 네비게이션 및 길찾기에 이용되는 것이 그래프 자료구조이다. 모든 지도의 지점들이 그래프로 나타내고 가장 가까운 경로를 알고리즘을 통해 찾아 빠른 길을 찾는 것이다.

 

이진 트리 또한 자료구조 및 알고리즘에서 필수적으로 다루는 것으로 빠른 검색과 정렬 속도를 보여 효과적인 자료구조이다. 이러한 트리를 순회하는 알고리즘은 깊이 우선, 너비 우선 탐색 알고리즘 등이 있는데 이러한 부분도 기존의 C 및자바언어가 아닌 파이썬을 통해 구현하고 실행해본다.

 

과거 우리는 자료구조와 알고리즘을 C와 자바등 저급 언어를 통해 배웠다. 하지만 많은 사람들이 파이썬 언어를 익숙하게 배우면서 비전공자들도 이러한 자료구조와 알고리즘을 배울 기회가 많아졌다. 과거 학창시절 배운 수학적 지식을 직접 사용할 수 있는 기회일수도 있고 누구에게는 사고력을 높일 수 있는 기회이기도 하고, 또 다른 누구에게는 훌륭한 서비스를 개발할 수 있는 밑바탕이 될 수 있을 것이다. 전체적인 책의 구성과 내용도 알차고 알맞은 형태여서 파이썬 중급이상으로 나아가고 싶다면 추천한다.

 

+ Recent posts