-
-
필수 알고리즘 with 파이썬 - 핵심 개념과 실전 문제로 마스터하는
박선주 지음 / 영진.com(영진닷컴) / 2018년 10월
평점 :
필수 알고리즘 with 파이썬
내가 대학을 입학한 1993년에는 C언어가 막 성장하고 있던 때였다.
그보다 먼저 대학을 다녔거나, 컴퓨터 프로그래밍을 시작한 사람은
파스칼 언어를 배웠다. 1995년 이후에는 자바 언어가 출현했고,
그후에도 정말 다양한 언어들이 태어나고, 사라지고, 변모하곤 하였다.
하지만, 여전히 살아남아서 자기의 개성을 뽐내는 언어도 많다.
오늘 소개하려는 것은 파이썬이다. 이미 10년 이상을 성장하여 오늘의 모습이 되었다.
내가 대학을 다니던 그 시절에는 인터프리터 언어는 앞으로 없어질 것이라고 누군가 말했다.
하지만, 현재는 Javascript 뿐만 아니라 파이썬이 대표적인 인터프리터 언어로 시대를 대표한다.
오늘 소개하려는 책은 파이썬을 기본 언어로 하여 알고리즘을 표현하는 방법들을 다룬다.
알고리즘이란 "주어진 조건에서 컴퓨터를 사용하여 효율적으로 문제를 해결하는 방법"이다.
이 책에 나오는 대부분의 알고리즘은 컴퓨터 전공자들에게 자료구조(data structure)로 기억된다.
문제를 해결하기 위해서 사용하기 적합한 자료구조와 그것을 처리하는 방법이 결국 알고리즘이다.
자료구조의 대표적인 예가 큐와 스택이다. 우리말을 사랑한 어느 컴퓨터학과 교수는
스택을 동전통이라고 설명하기도 했다. 과거에 택시나 버스 운전기사들이 동전을 거슬러 주기 위해
사용하는 기다란 통처럼 동작하기 때문이라고 설명한다. 그 통의 아래에는 스프링이 있고 닫혀있다.
항상 위로 동전을 넣고 위에서 동전을 뺄 수 있다. 먼저 넣은 동전이 가장 나중에 나올 수 있는 구조이다.
또 다른 교수는 탄창이라고 설명한다. 피스톨 방식의 총의 탄창도 스프링이 적용되어 있어
가장 먼저 끼운 총알이 가장 마지막에 스프링의 힘으로 실린더 내로 유입될 수 있기 때문이다.
스택에 데이타를 넣을 때는 push라는 처리함수를 사용한다. push(1)이라고 하면 1이란 데이타를 넣는 것이다.
다시 뺄 경우에는 pop이라는 처리함수를 사용한다. pop()이라고 하면 스택의 가장 위에 있는 데이타가 뽑혀진다.
한번 pop한 데이타는 다시 push하지 않으면 자료구조에 남아 있을 수 없다.
즉, push(pop())은 결국 자료구조에 변화가 없게 된다.
이런 자료구조를 파이썬은 기본적으로 제공한다. 이런 자료구조들을 활용하여
특정 범위 내의 소수, 약수 등을 구하고 저장하고, 출력하는 예제들을 코드로 만들고, 컴파일하고, 실행하게 된다.
즉, 자료구조는 링크드 리스트, 이중 링크드 리스트, 스택과 큐, 트리 등이 있고,
기본 제공되는 각종 정렬 알고리즘과 이진 검색 알고리즘 등을 먼저 설명한다.
그런 후에 실전 문제 43개를 풀어가는 것이 이 책의 진행 방식이다.
처음부터 차근차근 모든 페이지를 읽고, 이해하고, 따라서 코딩하고 실행해 보면 파이썬에 대한 연습이 충분해 질 것이다.
이후에는 이렇게 연습한 것들을 틀로 삼아서 살을 붙이거나, 응용하면 충분할 것이다.
물론 디자인이나 그래픽 처리 등의 프로그래밍은 별도 라이브러리와 함수 사용법을 별로도 익혀야 되겠지만,
이 책의 내용이면 앞으로의 파이썬 프로그래밍이 훨씬 자신있게 될 것이라 생각된다. 파이팅~