IT

[북리뷰] 파이썬으로 익히는 말랑말랑 알고리즘 (비제이퍼블릭)

BoBooBoo 2022. 2. 20. 14:34
반응형

 

 

 

작성일: 2022. 2. 20. 일요일

내용: IT 개발 도서 리뷰

제목: 북리뷰 『파이썬으로 익히는 말랑말랑 알고리즘』 (비제이퍼블릭) 

분야: 프로그래밍, 파이썬, 알고리즘

출간일 : 2022년 01월 27일

 

 

파이썬으로 익히는 말랑말랑 알고리즘 - 교보문고

차근차근 설명하고 막힘없이 이해하는 알고리즘 | 알고리즘이 매번 새롭게 느껴진다면? 슬기로운 코딩 생활을 위한 기본서를 소개합니다. 매번 공부할 때마다 새롭게 느껴지는 알고리즘. 우리

www.kyobobook.co.kr

 

  이 책은 파이썬이라는 프로그래밍 언어를 막 배운 사람들이 자료구조, 알고리즘으로 대표되는 조금 더 심화된 방법들을 배우는데 정말 좋게 구성되어 있다. '1장 알고리즘이란?' 부터 시작해서 애매하게 알아서 항상 찾아보게 되는 '2장. 아는 것 같지만 떠올리기 어려운 기술들' 을 먼저 익힘으로써 알고리즘이란게 그렇게 어렵지만은 않은 거구나를 배울 수 있다. 개인적으로 알고리즘은 엄청 어렵고 결국은 프로그래밍에 있어서 최종보스라고 생각한다. 스택(stack), 해시(hash), 무차별 대입법(Brute Force), 소수(Prime), 정렬(Sort), 재귀(Recursive) 그리고 다이내믹 프로그래밍 기법(Dynamic Programming) 까지 배우게 된다. 자료구조나 알고리즘 수업을 들어본 사람은 알겠지만 사실 이 한권으로는 알고리즘을 모두 공부했다고 하기에는 조금 부족한 면이 있긴 하다. 그러나 이정도로도 충분하다고도 생각될 정도의 구성이기도 하다.

 

파이썬으로 익히는 말랑말랑 알고리즘

 

언제부터인가 자료구조와 알고리즘이 코딩테스트의 전유물인 것처럼 (필수적이면서도 시험치고 평가하기 좋기 떄문일까) 알고 있는 사람이 많이 보인다. 목적이 어떠하든 프로그래밍을 하려는 사람들은 꼭 거쳐야될 관문이 되긴 한 것은 개인적으로 굉장히 긍정적이라고 생각된다. 이런 책들이 새롭게 배우는 사람들을 많이 도와주는 역할을 할 것이라 생각된다. 

 

코딩 테스트가 아니더라도 알고리즘과 자료구조는 정말 중요하다.

 

  고작 10년 전이지만 라떼는 자료구조와 알고리즘은 역시 C 언어나 C++ 로 배워야 해! 라는 분위기가 많이 있었다. 실제로 수업도 슈도코드로 적힌 알고리즘으로 진행했고 C 언어로 구현하는 과제를 제출하기도 했다. 분명 많은 도움이 되었지만, 굳이 이렇게 어렵게 배워야 했을까라는 생각은 많이 든다. 요새 나온 책들은 정말 쉽고 재밌게 적혀 있기 때문이다. 특히 이 책처럼 파이썬을 이용한 기본서들이 많이 나오게 되면서 더 많은 사람들이 프로그래밍을 쉽고 재밌게 배우게 된 것이 아닐까 싶다. 

 

무차별 대입법은 처음에는 별 것도 아닌 것 같지만, 이게 결국 해킹의 기본 원이는 여기서 출발한다.

 

  대학교에서 자료구조와 알고리즘 수업을 들을 때 항상 궁금했던 점은 '도대체 이걸 왜 배워?' 였다. 3학년이 되어서야, 운영체제, 네트워크 등 다양한 전공수업들을 듣고 나서야 그 이유를 알게 되었었다. 그 때가 되니 또 새로운 질문이 생겼었는데, '왜 운영체제나 네트워크를 먼저 배우지 않는거지?' 였다. 당시 얻은 답 중 하나는 '알고리즘과 자료구조를 모른채로 배워도 이해 못해' 였는데,,. 둘다 맞는 말이긴 하다. 여전히 정확한 답은 모르겠지만, 어떤 과목을 먼저 배우든 그것을 배우는 이유와 쓰임새를 먼저 알려주는 것은 굉장히 중요하다고 생각된다. 이런거 없어도 잘 배우는 사람들이 있긴 하다. 이 책은 새로운 것을 시작할 때 항상 왜 쓰는지를 알려주고 시작한다. 이제 막 프로그래밍을 배운 사람은 이 정도로 알려줘도 잘 와닿지 않을 것임을 확신한다. 다만, 배워야 할 이유가 있다는 것으로도 상당한 동기부여가 될 것이다.

 

블록체인의 핵심 기술 중 하나

 

  6장은 해시(Hash)에 대해서 다루고 있다. 해시 태그, 블록체인 등 기술들은 이제 왠만한 일반인이 모두 아는 용어가 되었다. 그 기술들의 핵심이 되는 자료구조는 단연코 해시가 아닐까 싶다. 정말 심플하면서도 빠르지만 배우면 배울수록 뭐가 엄청 많은 재미있는 구조다. 처음 배우면 이것만 있으면 다 되는거 아니야? 하고 막 써버리는 위험한 짓(?)을 하곤 하는데, 그만큼 간단하면서도 좋은 기술이기 때문이 아닐까. 

 

개인적으로 필자가 다이내믹 프로그래밍을 넣어야될지 고민을 많이 했을 것 같다.

 

  가장 마지막 장에는 다이내믹 프로그래밍을 다루고 있다. 이 단원까지 잘 넘어온 사람들도 여기서 한번 더 때려치고 싶다는 생각을 하게 될 것 같다. 실제 수업들을 때도 정말 애먹었던 파트다. 아마 필자도 이 단원을 굳이 넣어야 할까 많이 고민했을 것이라 생각된다. 마지막 단원에 넣은 것이 나름 신의 한수일까. 끝까지 본 사람들은 절대 이 단원을 포기하지말고 완독을 하길 권한다.

 

 

정리

  파이썬을 첫 프로그래밍 언어로 공부하게 된 사람들이 좀 더 심화 공부를 하고 싶다거나 코딩 테스트 연습을 하고 싶은데 기본기가 없다고 하면 이 책을 꼭 추천하고 싶다. 문제를 풀면서 바로 몸으로 체득하는 것도 정말 좋은 방법이지만 이런 책 하나를 옆에 끼고 있으면, 고민하지 않아도 되는 문제에 시간을 낭비하는 일을 많이 줄일 수 있을 것이다. 나는 굳이 내가 모든 것을 해결할 필요가 없다는 생각을 빨리 할수록 더 많은 것을 배울 수 있다고 생각한다. 그러기 위해서는 이미 해결된 문제들을 빠르게 습득할 필요가 있는데, 이 책이 그 시발점이 될 수도 있을 것이다.

 

 

 

 

 

 

 

반응형