한빛출판네트워크

IT/모바일

파이썬 자료구조와 알고리즘 : 기초 튼튼, 핵심 쏙쏙, 실력 쑥쑥

한빛미디어

번역서

판매중

파이썬 자료구조와 알고리즘 : 기초 튼튼, 핵심 쏙쏙, 실력 쑥쑥
좋아요: 4
  • 저자 : 미아 스타인
  • 역자 : 최길우
  • 출간일 : 2019-07-03
  • 페이지 : 360쪽
  • ISBN : 9791162241912
  • 물류코드 :10191

합계 : 19,800

  • 기초 튼튼, 핵심 쏙쏙, 실력 쑥쑥 

    파이써닉한 코딩으로 배우는 핵심 알고리즘 

     

    이 책은 파이썬을 십분 활용해 필수적인 자료구조와 알고리즘을 두루 살펴본다. 스택, 큐, 연결 리스트 등 추상 데이터 타입과 정렬, 검색, 동적 계획법, 그래프, 트리 등 개발자가 꼭 알아야 할 알고리즘 핵심을 짚는다. 모든 알고리즘은 파이써닉한 코드로 전체를 구현했고 일부 장은 연습문제도 제공한다. 파이썬에 능숙하지 않은 독자를 위해 파이썬의 내장 데이터 타입, 객체지향, 동시성 등 파이썬 중고급 주제도 앞부분에서 설명한다. 

     

     

    상세-이미지.jpg

     

  • [저자] 미아 스타인

    서프라인(Surfline)의 시니어 소프트웨어 보안 엔지니어. 이전에는 엣시, 애플, 옐프 등에서 근무했다. 고교 시절부터 리눅스로 해킹과 코딩을 즐겼고 2014년 리커스 센터(Recurse Center)를 졸업했다. 2015년 데프 콘(DEF CON)에 참가해 자신과 같은 괴짜들을 만났고 양자 암호학에 관해 발표했다. 주요 관심 분야는 보안과 인공지능/머신러닝/딥러닝이다. 로스앨러모스 국립연구소, 브룩헤이븐 국립연구소, NASA 등에서 연구했다.

    [역자] 최길우

    CDN과 웹, 미디어, 보안 등 클라우드 솔루션을 제공하는 아카마이에서 솔루션즈 아키텍트로 근무했다. 현재는 채팅 API 및 SDK를 제공하는 센드버드에서 솔루션즈 엔지니어로 근무하며, 아시아 지역 고객의 기술 지원을 담당한다. 한빛미디어에서 『고전 컴퓨터 알고리즘 인 파이썬』(2019), 『파이썬 자료구조와 알고리즘』(2019), 『우아한 사이파이』(2018), 『처음 시작하는 파이썬(1판)』(2015), 『Head First C#(3판)』(2015)을 우리말로 옮겼다. 

  • [PART 01 헬로, 자료구조!]

      

    CHAPTER 01 숫자

    1.1 정수 

    1.2 부동소수점 

    1.3 복소수 

    1.4 fraction 모듈 

    1.5 decimal 모듈 

    1.6 2진수, 8진수, 16진수 

    1.7 연습문제 

    1.8 넘파이 패키지 

     

    CHAPTER 02 내장 시퀀스 타입

    2.1 깊은 복사와 슬라이싱 연산 

    2.2 문자열 

    2.3 튜플 

    2.4 리스트 

    2.5 바이트와 바이트 배열 

    2.6 연습문제 

     

    CHAPTER 03 컬렉션 자료구조

    3.1 셋 

    3.2 딕셔너리 

    3.3 파이썬 컬렉션 데이터 타입 

    3.4 연습문제 

     

    CHAPTER 04 구조와 모듈

    4.1 모듈 

    4.2 제어문 

    4.3 파일 처리 

    4.4 오류 처리 

     

    CHAPTER 05 객체지향 설계

    5.1 클래스와 객체 

    5.2 객체지향 프로그래밍의 원리 

    5.3 디자인 패턴 

     

    CHAPTER 06 파이썬 고급 주제

    6.1 멀티 프로세스와 멀티 스레드 

    6.2 좋은 습관 

    6.3 단위 테스트 

     

     

    [PART 02 알고리즘 세상 속으로]

     

    CHAPTER 07 추상 데이터 타입

    7.1 스택 

    7.2 큐 

    7.3 데크 

    7.4 우선순위 큐와 힙 

    7.5 연결 리스트 

    7.6 해시 테이블 

    7.7 연습문제 

     

    CHAPTER 08 점근적 분석

    8.1 복잡도 종류 

    8.2 재귀 알고리즘 

    8.3 함수의 실행 시간 

     

    CHAPTER 09 정렬

    9.1 2차 정렬 

    9.2 선형 정렬 

    9.3 로그 선형 정렬 

    9.4 시간복잡도 비교 

    9.5 연습문제 

     

    CHAPTER 10 검색

    10.1 정렬되지 않은 배열 

    10.2 정렬된 배열 

    10.3 연습문제 

     

    CHAPTER 11 동적 계획법

    11.1 메모이제이션 

    11.2 연습문제 

     

     

    [PART 03 아름다운 그래프와 트리의 세계]

     

    CHAPTER 12 그래프 기초

    12.1 용어 

    12.2 이웃 함수 

    12.3 트리와의 연결점 

     

    CHAPTER 13 이진 트리

    13.1 용어 

    13.2 이진 트리 구현하기 

    13.3 이진 탐색 트리 

    13.4 자가 균형 이진 탐색 트리 

     

    CHAPTER 14 트리 순회

    14.1 깊이 우선 탐색 

    14.2 너비 우선 탐색 

    14.3 트리 순회 구현하기 

    14.4 연습문제 

     

    CHAPTER 15 한국어판 부록 : 참고 자료

  • 파이썬 프로그래밍과 알고리즘 핵심만 쏙쏙쏙 

     

    자료구조와 알고리즘은 개발자의 기본 소양이다. 나날이 인기를 얻고 있는 파이썬은 거의 의사코드 그대로 로직을 작성할 수 있다는 점에서 알고리즘 학습에도 유용하다. 이 책은 파이썬을 십분 활용해 필수적인 자료구조와 알고리즘을 두루 살펴본다. 

    파이썬 문법을 갓 뗀 독자를 위해 파이썬의 내장 데이터 타입, 객체지향, 동시성 등 파이썬 기초 및 고급 주제를 설명한다. 이어서 스택, 큐, 연결 리스트, 해시 테이블 등 추상 데이터 타입을 익히고 파이썬으로 구현해보며, 나아가 정렬, 검색, 동적 계획법, 그래프, 트리 등 개발자가 꼭 알아야 할 알고리즘들의 핵심을 짚어본다. 풀이 과정을 그린 그림으로 이해를 돕고, 모든 예제에 대해 파이써닉한 코드를 함께 수록했다. 일부 장은 연습문제와 해답도 제공한다. 

     

    주요 내용

    • 숫자, 시퀀스, 컬렉션 등 파이썬의 데이터 타입
    • 모듈, 클래스, 객체지향 등 설계에 필요한 지식
    • 동시성, 가상 환경, 단위 테스트 등 고급 주제
    • 스택, 큐, 데크, 연결 리스트, 해시 테이블 등 추상 데이터 타입
    • 2차, 선형, 로그 선형 등 점근적 분석을 통한 시간복잡도 이해
    • 다양한 시간복잡도의 정렬/검색 알고리즘
    • 동적 계획법과 메모이제이션
    • 그래프/트리 용어 이해 및 트리 순회 알고리즘 구현

    • 본 리뷰는 한빛미디어로부터 도서를 지원받아 작성되었습니다.


       



      undefined


       


       


      표지


      들고다니기 편한 적당한 크기


      개발 서적 답지 않은 작은 크기는 언제 어디서나 가볍게 들고다니며 보기 좋을 것 같다는 생각이 들게 하였다.


      자료구조와 알고리즘


      사실 필자는 자료구조나 알고리즘에 대해서는 잘 알지 못 한다. 비전공자이면서 현재는 취미로 프로그래밍을 공부하고 있기 때문이다. 그렇기에 이 책은 필자의 흥미를 더 끌어냈다. 이 책표지를 넘기기 전까지 필자는 미지의 세계로 여행을 떠나는 모험가의 기분을 느낄 수 있었다.


      내용


      빠르게 훑어보는 파이썬 문법


      표지에서 느낄 수 있었던 작은 크기와 두께에 걸맞은 가벼운 내용들이 눈에 들어왔다. 프로그래밍 언어나 자료구조, 알고리즘을 처음 접하는 사람이 언제 어디서나 가볍게 읽어보기에 더할 나위 없이 좋은 책이라는 생각이 든다.


      가볍게 읽는 자료구조와 알고리즘


      앞서 언급한 바와 같이 필자는 자료구조나 알고리즘은 잘 모른다. 그런 필자도 가볍고 편하게 읽을 수 있었던 책이라는 점에서 이 책은 굉장히 칭찬할 만한 좋은 내용을 가지고 있다고 생각한다. 실제로 필자는 이 책을 근 한달 간 들고다니면서 짬짬히 읽곤 하였는데, 역시나 가볍고 편하다. 컴퓨터를 배우면서 강하게 마음 먹지 않고도 편하게 넘길 수 있는 책은 처음이었던 것 같다.


      결론


      이 책은 가볍게 파이썬 문법을 배우고 싶거나 자료구조와 알고리즘을 처음 배워보려 하는 사람들에게 알맞은 책인 것 같다. 그리고, 얇고 작은 크기와 가볍고 쉬운 설명 덕분에 이동하면서도 편하게 읽을 수 있고, 틈틈히 남는 시간을 유용히 활용할 수 있는 책이라는 점에서 굉장히 커다란 메리트를 가지고 있다는 생각이 든다.


    • mail.naver.com.jpg



      mail.naver.com2.jpg


      간단한 설명으로 읽기 편하고, 지루하지도 않고 좋네요.


      평소에 틈틈히 읽어보기도 좋고, 사전식으로 찾아 볼 수 있어서 좋습니다.


      파이썬은 급할때 막 찾아서 하게되는데,


      사전식으로 구성되거나 예제가 꼭 한개씩 나오는 책들은 별로 없거든요.


      대부분 저자의 주제나 흐름대로 많이 쓰는 함수만 나오는데,


      이건 사전식으로 빠짐없이 예제까지 알기 쉽게 설명이 되어있어서 유익합니다.


    •  

      미아스타인 지음 | 한빛미디어 | 2019년 07월

       

      추천대상 : 파이썬 학습, 파이썬 자료구조 학습자

      기초지식필요 :  파이썬 문법 기초 필요

      난이도 : 초급자 이상(프로그래밍 기본이 필요함)

      이동성 :  이동시 보기에 최적화(360p)

      핵심 : 자료구조에 대한 기본 이해가 있고, 파이썬 기초 문법에 대한 선행이 필요합니다. 

       

      [본 리뷰는 출판사가 제공한 도서를 읽고 직접 작성하였습니다.]

       


      파이썬1.jpeg


       


       


       


       


      기본적인 파이썬의 자료구조를 Part 1에서 설명을 하고 있습니다. 숫자형 처리에 대한 예시와 자료구조 코드를 함께 익힐 수 있습니다.  

      Chapter 06 파이썬 고급주제로 멀티 프로세스와 멀티 스레드에 대한 기술적 설명과 개발자로서의 습관(가상환경, 디버깅, 프로파일링)에 대해 기술하고 있습니다만, 왜 이렇게 처리를 해야하는지에 대한 설명이 부족해서, 처음 파이썬을 이용해서 사용하시는 분은 조금 막막할것도 같습니다. (이 부분을 길게 쓰면 책이 두꺼워지겠네요)

       

      Part2 알고리즘 세상속으로 내용에는 정렬과 검색을 다루고 있습니다. 간결하게 코드와 설명이 되어있고 그림이 잘 작성되어 학습을 하다보면 이해에 도움이 됩니다. 



      파이썬3.jpeg


       



      Part3 그래프와 이진트리, 트리 순회에 대해서 기술하고 있고 이부분은 핵심에 대해서 잘 담고 있습니다. 

      이부분을 보면서 잘 이해가 가지 않을때는 참고할만한 자료를 봐야 되는 경우도 있었습니다. 


      파이썬2.jpeg




      전반적으로 파이썬과 자료구조, 알고르짐에 대한 핵심이 잘 정리되었고, 가볍게 이동중에 꾸준히 학습할 수 있는 개발서적입니다.  

    • 파이썬은 세계에서 가장 인기있는 프로그래밍 언어 중 하나 이다. (2019 설문 기준으로 자바를 넘어 섰다.


       https://insights.stackoverflow.com/survey/2019) 


      파이썬이 인기 있는 이유 중 하나가 일반적으로 사용 하는 언어와 닮아 있다는 점인데, 불행이도 한국어를 사용하는 사람에게 적용되는 이유는 아닌듯 하지만 그만큼 나의 생각을 코드로 표현하기가 쉽다는 점이 파이썬의 장점이며 강점이다. (특히나 초보자에게)


       


      다만, 아무리 쉽다 하더라도, 단순한 문법을 배우는 것만으로는 프로그래밍언어를 가지고 원하는 내용을 만들어 내는 것은 쉬운 일이 아니다. 더군다나 자료구조라던지 알고리즘 이라던지 일반적인 말로 해도 알아듣기 어려운 내용에 대해서 새로 배운 언어로 표현하는 것은 생각보다 귀찮고 어렵고, 어떤 식으로든 필요한 내용을 찾아 볼 방법이 필요 하다.


       


      보통은 블로그나 github 을 통해서 필요한 내용을 찾아보는 것을 주로 했는데, 이번에 읽은 “파이썬 자료구조와 알고리즘” 책은 그 역할에 딱 적당한 책이다.


       


      일반적으로 보통 레퍼런스 북이라면 베게로 쓰기에 딱 적당한 두툼한 두께의 평소에는 거의 찾아볼일이 없지만, 일단 폼으로 한권 사 두고 정말로 필요할 때 한번정도 들춰보는 그런책을 상상하기 마련이지만, 이 책은 매우 얇은 두께의 적당한 판형으로 작은 가방에도 쏙 들어가는 사이즈이다. 


       


      그럼에도 불구하고 파이썬의 자료구조에 대한 기본적인 내용 부터 파이썬을 사용하여 추상데이터 타입 (큐, 힙, 해시테이블 등) 을 다루는 방법 또한 정렬, 검색, 그래프 같은 내용까지 간단하게나마 전부 다루고 있다. (퀵소트나 레드 블랙 트리 등과 같은 내용에 대해서는 다루고 있지 않다.)


       


      자료구조에 대한 기본적인 이해가 있고 파이썬을 공부하기 시작한 사람이라면, 한번 쭉 읽어두고 (그럴만큼 얇은 책이다.) 필요할 때 한번 더 필요한 내용에 대해서 찾아보면서 읽어 볼 수 있는 좋은 책이다.


       

    •  



      학과의 전유물에서 취업의 필수 코스로…. 파이썬 자료구조와 알고리즘



       







      KakaoTalk_20191117_212636943.jpg


       


       







      때 마침 수능이 있었다. 매서운 찬 바람이 불면 늘 생각하는 그 날이다. 본인이 컴퓨터 학과에 진학하던 2000 년도는 컴퓨터 학과는 컴퓨터라는학문을 배우는 어쩌면 조금은 별난 사람들만 가는 흔치 않았던 학과 였던 것 같다. 프로그래머라는 직업자체가 낯설었던 때이기도 하고, 학과 커리큘럼이 그다지 비인기를 떠나,비 인간적이던 ;;; 쇠 덩어리 느낌의 이 차가운 기계와 대화를 시도하던 이상한 사람들이모인 학과하물며 미팅 주선도 들어오지 않았던 흔한 무언가 어두운 학과 였단 말이다.



       



      그런데 천지가 개벽을 했다. 이젠 누구나 컴퓨터와 친하게 지내고 컴퓨터프로그래밍을 하고 이젠 꼭 컴퓨터를 전공하지 않아도 컴퓨터와 더 친해지기 위한 노력으로 데이터를 다루고 프로그래밍을 하기 위해 자료구조와 알고리즘을공부하는 시대가 되 버린 것이다.



       



      프로그래밍 언어가 점점 친숙해지더니 이젠 다양한 분야에서 맹활약 중인 파이썬 언어가 대세가 된 것 같다. 하물며 초등학생도 노트북으로 파이썬 코딩을 한다고 하니, 20 년씩 두 번의 인생을 살아오고도, ( 다음 달이 마흔이라니;;; ) 아직익숙하지 않은 파이썬 코딩 학습에 더 분발해서 해야 할 지경이다. 배울수록 배워야 할 것이 많아지는이 분야를 왜 택했는지 20 년 전의 나로 돌아가서 말리고 싶어질 지경이다.



       



      컴퓨터 공학과 알고리즘을 일반인이 접하기는 정말 낯설고 어려운 항목인 것은 맞으나, 이 책은 우선 사용자들에게 친숙한 파이썬 언어를 기반으로 하고 있어서 적어도 첫 장에 책을 덮는 일은 없겠다. 또한 스택과 큐, 리스트 등의 용어를 알고 학습한 개발자들도 파이썬에서구현하는 방법을 학습하기에 이 책이 많이 도움이 될 듯 하다.



       



      최근에는 대부분의 회사가 컴퓨터 프로그래밍 랭귀지에 종속되지 않고 본인이 원하는 언어를 통해서 회사에서 제시하는문제를 풀도록 유도하고 있다. 십 수년 간의 경험을 통해 이제 더 이상 언어에 종속되는 것이 크게 문제되지않음을 알고 있는 것 같다. 최근은 아울러 코딩을 온라인에서 브라우저를 켜는 것만으로도 가능하게 하는수 많은 웹사이트들이 존재하므로 꼭 전문가의 영역이라고 여기고 부담을 느낄 필요도 없다.



       



      우선 이 책의 장점은 프로그램 언어에 능숙한 상대를 통해서 자료구조와 알고리즘을 레퍼런스처럼 단순히 적어 놓은것이 아니라, 기본적으로 알아야 할 기본 문법 구조를 적절히 알려주고 바로 구조와 알고리즘을 제시함으로써책의 섹션 분류가 크게 무리 없이 학습할 수 있는 수준으로 나뉘어져 있다.



       



      최근 IT 회사들이 비 전공 프로그래머들에게도 자료구조와 알고리즘을테스트하는 다양한 코딩 테스트를 진행하는 것으로 알고 있다. 그런 후배들에게 추천하고 싶은 책이다. 가볍지만 절대 단순히 넘어가면 안되는 내용이 꽉 차 있으니, 한달 정도 충분히 숙련해보면 좋은 결과가 있지 않을까 생각한다.



       



      그나저나 한빛미디어에서 고맙게도 전문가를 위한 C++” 책을 보내줬는데, 무려 1500페이지에 달하는 무겁고 큰 책을 몇 일 만에 읽으라고 해서 중학교 2학년 처럼 ㅎㅎ 그렇게는못하겠다고 진득하게 C++ 학습을 계속 하고 있다. 언젠가는그 책에 대한 소감도 적어서 꼭 올리겠다.



       



      ! 파이썬 자료구조와 알고리즘 이 책은 360 페이지 밖에 되지 않는다. 하루에 한 섹션만 읽어도 몇 일이면되니 중도에 포기하는 분은 없었으면 하는 바램이다. ^^


       


    • 2019년 7월에 출간된 <파이썬 자료구조와 알고리즘>에 대해 살펴보겠습니다. 이 책의 저자는 미아 스타인(Mia Stein)이며, 번역은 최길우 님께서 맡아주셨습니다. 이 책은 Mia Stein이 작성한 책의 두 번째 버전입니다. 



      <파이썬 자료구조와 알고리즘>의 장점 중 하나는 휴대하기 좋습니다. 처음부터 휴대하며 보는 것은 조금 어려운 주제를 담고 있는 책이지만, 이 책을 반복하면서 보기에는 좋은 크기와 무게로 제작되었습니다. 물론 전자책을 볼 수 있는 리더기를 보유하고 계신 분이라면 전자책도 출간했으니 참고하시면 좋을 것 같습니다.  



      한빛미디어에서 기획하고 추진하는 한빛리더스 프로그램에 참여하며 작성한 글입니다. 




      이 책에서 다루는 내용은?



      이 책은 파이썬의 숫자, 시퀀스, 컬렉션 등 파이썬에서 제공하는 기본적인 데이터 타입부터 소개합니다. 이후, 파이썬에서 객체지향 프로그래밍을 하기 이한 설계 기법을 소개하고, 멀티 프로세스와 스레드, 단위 테스트 작성법을 소개하는 것으로 첫 번째 파트를 마칩니다. 



      이후에는 자료구조의 기본인 스택, 큐, 데큐, 연결리스트, 해시 테이블에 대해 다루고, 재귀 알고리즘과 분할정복 알고리즘을 소개합니다. 이후에 다양한 정렬 알고리즘과 검색 알고리즘을 소개합니다. 2장의 마지막 부분은 동적 계획법을 소개하며 동적계획법의 핵심인 메모이제이션을 활용하여 피보나치 수열을 해결하는 방법을 소개합니다. 



      마지막 3장에서는 그래프 기초와 이진 트리, 그리고 트리 순회 알고리즘을 살펴보는 것으로 이 책을 마칩니다. 



      <파이썬 자료구조와 알고리즘>에서는 일반적으로 중요하다고 이야기하는 자료구조와 알고리즘의 많은 부분을 다루고 있습니다. 파이썬 입문서를 본 후, 파이썬에 흥미가 느껴진다면 이 책으로 자료구조와 알고리즘을 매력에 빠져보는 것은 어떨까요?



      마지막으로 이 책에는 재미있는 연습문제들이 있습니다. 이 연습문제를 직접 풀이하면서 이 책에서 습득한 자료구조와 알고리즘에 대해 효과적으로 이해할 수 있을 것입니다.




      마치면서



      <파이썬 자료구조와 알고리즘>은 파트 3, 15 챕터로 약 360페이지 분량으로 구성되어 있습니다. 360페이지 분량으로 파이썬과 자료구조, 알고리즘을 모두 설명하는 것은 불가능합니다. 그러므로 파이썬의 입문서를 본 이후에 이 책을 보는 것을 추천합니다.



      이 책을 처음 자료구조와 알고리즘을 배우는 교육 교재로 사용하는 것은 추천하지 않습니다만, 이미 자료구조와 알고리즘을 학습했었고, 파이썬을 이용해서 자료구조와 알고리즘을 복습하기에는 매력적인 책으로 생각합니다. 


    • IMG_6026.jpg


       


       

      실력있는 개발자가 되기 위해서는 자료구조와 알고리즘에 대해 항상 공부하고 준비해야 한다. 특히나 요즘 IT 기업들은 코딩테스트를 필수적으로 보기 때문에 이러한 기초가 준비되어 있지 않으면 탈락하기 쉽상이다. 이 책은 파이썬을 사용해 자료구조와 알고리즘을 학습할 수 있다. 파이썬이라는 언어 자체가 알고리즘을 구현해보는데 적합하다고 생각한다. 문법이 쉽고 간결하기 때문이다. 그래서 코딩테스트를 본다고 하면 파이썬을 선택하는 사람들이 많다. 코딩테스트를 준비하는 사람에게도 좋은 책기본이 되는 알고리즘을 활용한 문제들이 많이 나오고 있기 때문에 그에대한 대비를 할 수 있다. 전체 소스코드가 있기 때문에 자신의 것으로 만든 뒤 다른 방법으로 구현해보는 연습을 한다면 좋은 결과를 얻을 수 있을 것 이다.개발자로 취업하려는 준비생들에게 이 책을 추천한다.


    • python.png


      대게 자료구조는 C와 Java 로 많이 된 서적들이 많은데 파이썬으로 설명된 자료구조라는 점에서 굉장한 호기심을 가지게 되었다. 대게 회사 면접을 볼때 쓰는 시험들이 파이썬으로 문제를 푸는 비율이 점점 높아졌다는 얘기를 들었고, 파이썬을 주로 쓰는 입장에서 볼때 굉장히 반길수 밖에 없는 책이다. 책의 처음 부분에는 파이썬 내장 타입과 자료구조를 설명을 하고 있어 파이썬이 가지고 있는 자체의 자료구조를 활용하는 방법을 설명을 한다. 이는 생각보다 간편하다는 점에서 굉장한 이점을 가지고 자료구조와 알고리즘을 설명할 수 있는 활용 방안인것 같다. 생각보다 타입이 유용하고 활용을 할 수있다는 점을 활용해서 알고리즘을 구현 할 수 있도록 하는 방향이 참으로 맘에 든다. 알고리즘은 어떠한 문제점을 효과적으로 해결 할 수 있도록 하는 것이고 이에대한 기본적인 자료구조와 정렬,검색, 그래프, 이진트리, 트리 순회를 쉽게 풀이 했다는 점에서 괜찮은 책이고 다른 사람에게도 이책을 한번씩 꼭 읽어보라고 추천을 한다.


       

    •  



      스크린샷 2019-11-15 오후 10.13.13.png


       


       



      파이썬은 문법 구조가 쉽기 때문에 프로그래밍을 처음 접하는 초보자도 쉽게 이해할 수 있다.



      그 어떤 프로그래밍 언어보다 확장성이 월등히 높은 언어로 개발자는 물론 비개발자들도 쉽게 입문할 수 있다.



      특히 파이썬은 의사코드와 비슷한 구조 이기에 초심자가 보아도 가독성도 좋다.



      다양한 분야에서 사용되고 있지만 특히 파이썬은 데이터 분석이나 자동화에 많이 사용되고, 요즘 각광받는 머신러닝에서도 필수인 언어다. 







      하지만 파이썬을 마음 먹고 공부해본적은 없었다. 메인 언어가 아니기도 하지만, 그때 그때 임기응변식으로 코딩했던게 많았다.



      알고리즘 트레이닝 할 때 파이썬으로 해보려고 했지만, API를 많이 알지 못하니 문제 해결보다 API 찾는데 시간을 더 할애하게 되었다. 



      그런데 마침 파이썬 문법과 알고리즘까지 한 번에 볼 수 있는 책이 나왔다. 







      알고리즘하면 또 필수인 자료구조가 있다. 파이썬 자료구조와 알고리즘은 이 두 가지를 모두 다루고 있어 초급자가 입문하여 기초를 잡을 수 있는 좋은 책이다. 







      주요 내용



      - 숫자, 시퀀스, 컬렉션 등 파이썬의 데이터 타입



      - 모듈, 클래스, 객체지향 등 설계에 필요한 지식



      - 동시성, 가상 환경, 단위 테스트 등 고급 주제



      - 스택, 큐, 데크, 연결 리스트, 해시 테이블 등 추상 데이터 타입



      - 2차, 선형, 로그 선형 등 점근적 분석을 통한 시간복잡도 이해



      - 다양한 시간복잡도의 정렬/검색 알고리즘



      - 동적 계획법과 메모이제이션



      - 그래프/트리 용어 이해 및 트리 순회 알고리즘 구현







      코드도 깃허브에서 다운 받을 수 있으니 코딩 해보다가 잘 안되는 부분은 비교해볼 수 있다. 



      프로토 타입이나 급하게 애플리케이션을 만들어야 할 때 파이썬은 정말 좋은 언어이다. 가볍고 빠르다. 



      더불어 장고 프레임워크를 붙이면 웹개발까지 이어갈 수 있으니, 개발에 처음 입문하는 분들은 이 책을 계기로 개발을 계속 이어나가면 좋겠다.



    • 4차 산업혁명에 대한 사회적 관심이 높아지면서 그에 따라 IT 개발에 대한 관심도 늘어나는 것 같습니다.


      4차 산업혁명 핵심 테마 중 하나가 '데이터'이고, 이를 가장 잘 다룰 수 있는 언어 중 하나로 파이썬이 현재 가장 인기있습니다.


      파이썬은 데이터 처리에 강점을 보이고 있고, 타 개발언어보다 쉽게-처음은, 처음은 분명 더 쉽다고 말할 수 있습니다- 접근할 수 있기에 더욱 인기를 누리고 있는 것 같습니다.

       


      처음 개발을 시작할 때는 '자료구조'나 '알고리즘'의 필요성은 고사하고, 관심조차 갖지 않을 것입니다.


      소프트웨어 공학보다는 개발 언어나 개발 환경에 더 많이 관심을 갖게 되고, 능숙해지기 위해 부단히 노력합니다.


      하지만 어느 정도 능숙해지고 나면 하나의 벽을 만나게 됩니다.


      그 벽은 '자료구조'와 '알고리즘'으로 비전공자는 전공자들이 부럽기 시작하는 때이고, 전공자는 왜 열심히 전공 공부를 하지 않았는지 후회하는 때입니다.


      전공자들은 책장 구석에서 뽀얀 먼지를 뒤집어 쓰고 잇는-아직 버리지 않았다면- 전공서를 끄집어 내고, 비전공자들은 적당한 책이나 자료를 구하려고 합니다.

       


      이 책 '파이썬 자료구조와 알고리즘'은 이를 해소할 수 있는 좋은 가이드 북입니다.

       


      algorism.jpg


       


       


      파이썬에 대한 기초지식만 있으면 볼 수 있다는 것이 이 책의 장점이라 생각합니다.


      자료구조나 알고리즘을 이해하기 위해서는 상당한 전문지식이 필요하지만 실제 코드를 통해 접근하기에 보다 쉽게 이해할 수 있습니다.


      그리고 바로 실전에서 응용,적용할 수도 있습니디.


      책의 부제처럼 기초가 튼튼해지고, 핵심이 쏙쏙 들어오고, 실력이 쑥쑥 늘어남을 직접 느낄 수 있을 것입니다.

       


      책은 크게 3부로 나누어져 있습니다.


      1부에서는 '자료구조'를 설명하고 있습니다.


      정수와 진수부터 파이썬의 다양한 자료구조와 컬렉션, 객체, 클래스는 물론이고 멀티 프로세스와 멀티 스레드까지 보여주고 있습니다.


      자료구조는 어느 정도 알고 있다고 생각했었는데, 이 책을 보면서 아직도 부족한 부분이 많이 있다는 것을 느꼈습니다.

       


      2부에서는 '알고리즘'을 설명하고 있습니다.


      기본이라 할 수 있는 스택, 큐부터 재귀, 정렬, 검색 그리고 메모이제이션까지 보여줍니다.


      개인적으로는 이 부분을 보면서 이전의 소스들이 부끄러워졌습니다.

       


      3부에서는 '그래프와 트리'를 설명하고 있는데, 이 또한 알고리즘이라고 볼 수 있을 것 같습니다.


      솔직히 이 부분은 전공자가 아니라면 쉽게 이해하기 힘들 것입니다.


      그리고 모두 이해하고 능숙하게 구현할 수 잇다면 당신은 중급 이상의 개발자라 자부해도 좋습니다.

       


      이전부터 자료구조와 알고리즘을 이론이 아닌 코드로 직접 이해하고 싶었는데 이 책을 통해 제대로 배울 수 있었습니다.


      이 책에 나오는 자료구조와 알고리즘을 제대로 이해할 수 있으면 앞에서 말한 벽은 가볍게 뛰어넘을 수 있을 것입니다.









    • <나는 리뷰어다> 10월 이벤트 당첨으로 작성한 리뷰 입니다.







      [한줄평]



      코딩 면접을 파이썬으로 준비 할때 이책을 추천합니다.







      [목차구성]



      [PART 01 헬로, 자료구조!]



      CHAPTER 01 숫자



      CHAPTER 02 내장 시퀀스 타입



      CHAPTER 03 컬렉션 자료구조



      CHAPTER 04 구조와 모듈



      CHAPTER 05 객체지향 설계



      CHAPTER 06 파이썬 고급 주제







      [PART 02 알고리즘 세상 속으로]



      CHAPTER 07 추상 데이터 타입



      CHAPTER 08 점근적 분석



      CHAPTER 09 정렬



      CHAPTER 10 검색



      CHAPTER 11 동적 계획법







      [PART 03 아름다운 그래프와 트리의 세계]



      CHAPTER 12 그래프 기초



      CHAPTER 13 이진 트리



      CHAPTER 14 트리 순회



      CHAPTER 15 한국어판 부록 : 참고 자료







      [대상 독자]



      파이썬 개발 입문자



      코딩 면접을 준비하는 취업 준비생







      [서평]



      파이썬 입문 책을 보고 이제 뭐하지 할때 이책을 추천 합니다. 기본적인 파이썬 문법을 익히고 자료구조와 알고리즘을 학습을 하면 개발자로의 기본적인 스킬을 가질수 있으니깐요. 이책의 첫인상은 왜케 얇지 파이썬 요약집인가 생각이 들지만 막상 읽어보면 알짜 내용으로 있을건 다있습니다. 가방에 넣고 다니면서 심심할때 꺼내서 읽이면 좋을거 같습니다.



      자료구조와 알고리즘은 한번 보고 끝나는게 아니라 구구단 처럼 바로 딱딱 나올수 있도록 여러번 반복을 해서 체화를 해야 실전에서 제대로 써먹을 수 있습니다. 그러면 코딩 면접때 떨지않고 문제를 잘 해결 할수 있을것이라 생각합니다.


       

    • 총평


      파이썬이 인기를 얻으면서 최근에는 출간 목록도 다 쫓아가기 힘들 정도로 많은 책이 나오고 있다. 새로운 프레임워크나 언어 자체에 대한 책은 보통 버전이 올라가면 새로운 내용이 추가되므로 기존의 책은 다시 볼 일이 거의 없지만, 기본에 대한 책은 그렇지 않다. “파이썬 자료구조와 알고리즘”도 그런 책이다. 프로그래밍 면접을 볼 때 파이썬은 주로 사용하는 언어 중 하나이며, 자료구조와 알고리즘은 프로그래밍에서 항상 빠지지 않는 기본 중의 기본이다. 게다가, 최근 한국에서도 더 많은 소프트웨어 관련 회사들이 알고리즘 문제를 어떻게 해결하는 지를 주요 평가 기준으로 사용하기 때문에 시의적절한 책이라고 생각한다. Part 1은 파이썬 문법, Part 2, 3는 알고리즘이며, Part 3에서 그래프, 트리를 다루고 있다(각 장별 상세한 리뷰는 아래). 분량에 비해 비교적 많은 예제를 통해 설명하고 있고, 연습문제도 leetcode.com의 easy 난이도 정도의 문제들로 구성되어 이제 막 초급을 벗어나려는 경우 적절하다고 생각한다. 다만 각 chapter별 난이도가 고르지 않은 느낌이 있고, 구성이 일반적인 파이썬/자료구조 & 알고리즘 책과 다른 게 약간 어색하다는 생각이 든다.


      Part 1


      아무래도 제한된 분량 내에서 파이썬 문법을 설명하려다 보니 자세한 설명은 부족하지만, 하나의 소주제마다 많은 예제를 통해 바로 사용할 수 있는 실용성에 초점을 둔 거 같다.


      Chapter1.


      파이썬 기초 문법을 주로 설명하는데, 넘파이가 같이 포함되어 있다. 초보자들의 경우 설치부터 어려움을 겪는 경우가 많은데 이 부분을 언급하지 않고 바로 넘파이를 설명하면 python만 설치한 경우에는 분명히 오류를 보고 책에 문제가 있다거나 설명이 부족하다는 생각을 할 거 같다.


      Chapter2.


      string 처리를 설명하는데, string reverse에서 시작해 단어별 reverse와 같은 방식으로 확장하거나, 순열, palindrome 회문을 설명하는 등 초보자에게는 약간 어려울 수 있는 부분까지 확장한다.


      Chapter3.


      컬렉션을 설명하고, anagram 애너그램, 주사위, 중복 제거 등의 연습 문제를 보여준다. 이 부분은 워낙 중요하기도 하고 어떤 프로그램을 작성하건 항상 사용하는 부분이라 조금 더 설명이 자세하면 좋겠다는 생각이 들었다.


      Chatper4.


      4장은 순전히 파이썬 문법에 관계된 부분이며, 문제를 해결하는데 보조적인 역할을 하는 여러 가지 부분을 설명한다(대표적으로 file I/O). 간단한 문제 해결을 위한 프로그램에서는 별로 관계가 없으나 프로젝트를 진행하는 등 약간이라도 규모가 커지는 경우는 역시 매우 중요한 부분이다(예를 들어 프로젝트 구조를 결정하기 위해 import를 하는 등).


      Chapter5.


      5장은 OOP에 대한 내용인데, 이게 과연 초보자용 책에 필요할지는 잘 모르겠다. 디자인 패턴까지 넣었지만, 또 들어간 내용은 observer와 singleton뿐인데, 이건 심화 주제로 따로 소개만 하는 게 좋았을 거란 생각이 들었다.


      Chapter6.


      6장 역시 5장과 마찬가지로, 프로세스와 스레드, 가상 환경은 초보자용의 주제는 아니다. 물론 이 책은 초중급용이긴 하지만, 책의 주제를 생각하면 너무 적은 분량에 많은 주제를 넣고 싶어 했던 저자의 욕심이 아닐까 하는 생각이 든다. 디버깅과 테스트 부분은 하나의 파일/모듈로만 이뤄진 프로그램에서도 필요한 부분이므로 넣을 만 하단 생각이 든다.


      Part 2


      Chapter7.


      스택 큐 힙 연결 리스트 해시 테이블같은 기본이 되는 자료구조에 대한 장. 특히 7장에서 나온 스택과 큐 구현은 정석적인 구현으로 확실히 기억해두는 게 좋다. 해시테이블은 보통 프로그래밍 문제를 해결할 때 파이썬 내장을 이용하고, 해시테이블 자체를 구현해야 하는 문제는 없으므로 보고 이해만 할 수 있으면 된다.


      Chatper8.


      시간 복잡도를 설명하는 장. 보통 자료구조 알고리즘 책을 보면 거의 1장에 나오는 내용이므로 7장보다 앞에 가야 순서가 맞을 거 같다.


      Chatper9.


      정렬을 설명한다. python에서는 sort()나 sorted()로 간단하게 정렬을 할 수 있지만, 프로그래밍 면접에서는 실제로 구현을 해야 하는 경우가 있고(대개는 quicksort나 mergesort, heapsort), 구현은 안 해도 설명을 해야 하는 경우는 종종 있기 때문에 잘 파악을 해야 한다. 연습문제는 가장 큰 k개를 찾는 건데 보통 heap을 이용하는데 여기서는 quicksort로 설명을 한다.


      Chapter10.


      순차와 이진 검색을 설명하고 여러 가지 연습문제를 설명한다. 교집합을 구하는데 이진 검색을 사용하는 경우는 처음 본 거 같은데 개인적으로 잘 기억해야겠다는 생각을 했다. 자주 나오는 문제는 자기가 언제나 확실히 해결할 수 있는 방식을 하나 이상 확실히, 외울 정도로 기억하고 이렇게 새로운 방식으로 가능하다는 점도 알아두는 식으로 확장을 하면 좋다.


      Chapter11.



      dynamic programming. memoization을 아주 간단하게 언급하고 지나간다. 면접에서 만나는 프로그래밍 문제의 경우 간단한 DP 문제가 나오는 경우가 많기 때문에 이에 대한 연습이 필요한 경우 따로 책을 보는 게 좋다. 최근에 출간된 책 — 다이내믹 프로그래밍 완전 정복이 있어서 한 번 보려고 생각 중인데, 목차만 볼 때는 기본적인 부분을 설명하고 여러 가지 대표적인 DP관련 프로그래밍 문제를 다루는 걸로 보인다.


      Part 3


      Chapter12.


      graph 기초를 설명하고 간단히 구현할 수 있는 방법을 설명한다. 설명이 간단한 편이라 잘 읽어보고 그래도 이해가 안 되면 더 자세하게 설명하는 책을 봐야 한다.


      Chapter13.


      binary tree & binary search tree를 알려준다. 이 부분은 프로그래밍 퀴즈에서 정말 자주 나오는 부분이라 잘 기억해야 한다. 반면에 AVL 트리나 레드 블랙 트리는 물론 알면 좋지만 이 책의 전반적인 수준에서는 굳이 필요할까 하는 생각이 들었다. 개인적으로 봤던 수많은 프로그래밍 면접에서 단 한 번도 겪어본 적이 없는 문제이고, 다른 사람들 후기에서도 거의 본 적이 없다. 물론 그만큼 좀 더 어려운 부분이라 잘 알고 설명할 수 있다면 자신만의 강점이 될 수 있는 부분이기도 하다.


      Chapter14.


      DFS, BFS. stack과 queue를 이용해 iterative로 잘 설명하고 있다. 여러 가지 프로그래밍 문제에서 아주 유용하게 사용할 수 있는 부분이라 외울 정도로 기억해두는 게 좋은 기본 코드이다. 너비 우선 탐색을 영어로 breadth-first search BFS로 썼지만 예제에서 함수 이름은 BFT로 썼는데, 이게 breadth-first traverse의 약자라는 걸 같이 써주면 더 좋았겠다는 아주 쓸데없는 트집 하나 정도는 잡을 수 있다.


      부록


      그래프 알고리즘을 참고할 geeksforgeeks 링크와 프로그래밍 면접 준비를 위한 hackerrank, 백준 알고리즘 사이트 추천을 하고 있다. 개인적으로는 hackerrank보다 leetcode를 추천하는데, 그 이유는 hackerrank는 일단 문제 설명이 쓸데없이 길고 아주 가끔이지만 leetcode보다 좀 더 오류(도저히 못 풀겠어서 hackerrank가 제공하는 solution을 그대로 입력했는데도 timeout이 발생하는 등)가 있었기 때문이다.


      Etc.


      옮긴이 github. 예전에도 겪었던 일인데, 책 시작 부분의 저자 혹은 옮긴이의 말 부분에 있는 link는 리디북스에서는 link가 걸리지 않아서 따로 입력을 해야 한다. 일일이 확인을 하진 않았지만, 어떤 경우는 link를 클릭해서 바로 브라우저에서 볼 수 있고(34p NOTE의 시간 복잡도) 또 그렇지 않은 경우(37p 넘파이 링크는 클릭 불가능)가 있는 걸 보면 리디북스에서 link 부분을 처리할 때 오류가 있는 게 아닌가 싶다.



      https://github.com/AstinCHOI/Python-and-Algorithms-and-Data-Structures






    • #파이썬 #자료구조 #알고리즘






      파이썬은 최근에 가장 뜨거운 언어이다. StackOverFlow에 올라오는 글의 점유율이 크게 상승한 것이 이를 뒷받침해주는 결정적인 증거이다.






      이렇게 흥한 파이썬의 대표 이미지는 프로그래밍 입문자를 위한 쉬운 언어이다. 그러면 파이썬으로 좀 더 심화된 프로그래밍 공부를 하려면 어떻게 해야할까?






      바로 이 책을 보면 큰 도움이 될 것이다.





















      파이썬 자료구조와 알고리즘. 제목에서 모든 것을 말해주는 책이다.






      입문자에겐 어려운 책이며 다른 언어나 파이썬 기본 문법을 익힌 독자에게 유용하다. 언어만 파이썬일 뿐 책의 구성은 아주 탄탄하다.





















      먼저 자료구조를 학습한다. 알고리즘을 하기 위해서 자료구조는 필수적이다. 튜플부터 리스트를 살펴보고 셋과 스택까지도 다룬다. 그리고 기본적인 제어문도 포함하고 있다.






      객체지향 설계부분도 한 챕터로 되어 있는데 객체 생성과 기본적인 객체지향 원리 및 몇가지 패턴에 대해서 소개한다. 물론 이 부분도 알아야하지만 자료구조와 알고리즘에 직접적인 관련성은 조금 애매하다. 약간 친절한 욕심이 아닐까싶다.
























      알고리즘 부분은 기본적인 정렬부터 다룬다. 정렬은 역시 그림과 함께 다뤄서 이해하기 쉽게 설명하고 있다.
























      그래프와 트리까지 다루면서 책이 마무리 되는데 정말 자료구조와 알고리즘의 기본은 모두 담은 책이다. 입문자가 보면 좌절할 수도 있으니 꼭 기본서는 완전히 익히고 보는 것을 다시 한 번 추천한다.









    • 링크를 방문해보면 최근 들어 파이썬이 급속도로 점유율을 올리고 있는 것을 확인할 수 있다.



      개인적으로 인공지능 분야의 지속적이면서 폭발적인 성장에 따라 파이썬도 많이 쓰이는 것으로 생각된다.



      쉽게 시작할 수 있는 프로그래밍 언어이기도 하고 인공지능 분야의 방대한 라이브러리가 한몫했을 테니 말이다.



       



      그런 이유로 문득 알고리즘 공부를 해야겠다고 생각한 시점에 이 책을 선택하였다.



      알고리즘과 파이썬 두 마리 토끼를 잡고 싶었기 때문이다.



      그러나 통계적으로(?) 찾아보진 않았지만 주변에서 들어보았기를 두 마리 토끼를 잡다가 두 마리 토끼를 모두 놓친다고 하지 않던가.



       



      이 책도 개인적인 느낌으로는 그렇게 생각된다.



      파이썬, 자료구조, 알고리즘 세 가지를 정리하다 보니 아무래도 작고( A5 ) 적은 페이지( 약 360 ) 수로는 한계가 있었으리라 생각된다.



       



      일단 개인적으로 파이썬을 조금 공부해본 상태에서 이 책을 접하게 되었다.



      그렇기 때문일까 파이썬에 대한 설명이 많다고 느껴진다. 그런데 설명해주는 종류가 많은 것이지 설명 자체는 조금 불만족스럽다.



       



      일단 여러가지를 하나하나 설명하고 넘어가기 때문에 종류가 많다. 그래서 만약 이 책으로 파이썬을 처음 접하는 독자라면 힘들 수 있다.



      파이썬의 기초를 설명해주는 것은 아니고 자료구조에 쓰이는 여러 가지(숫자, 내장 시퀀스, 컬렉션, 기타 등등)를 설명하는 것이기 때문이다.



      그런 의미에서 파트 1 헬로, 자료구조! 는 읽으면서 많이 졸렸다. 분명 알고 있어야 하는 내용들이지만 그냥 이런 게 있구나 하는 정도로도 충분할 것이라고 생각하기 때문이다.



      그때그때 필요한 것들을 생각해낼 수 있는 수준 정도로만 읽고 넘어가도 좋다고 생각한다. 아니면 나중에 무언가 작업하다가 이런 게 필요한데...라는 생각이 들 때 목차를 살펴보도록 하자.



       



      이 작은 책에 작은 파트에 자료구조만 넣는 것도 공간이 많이 부족했을 텐데 객체지향이라던가 멀티스레딩이라던가 단위 테스트까지 들어간 것은 대단하다.



      그렇지만 자세한건 다 공식문서를 참조하라고 하고 넘어가기도 하는데 별로 좋게 와 닿진 않았다.( 이래서 설명하는 종류만 많다고 한 것이다. )



      그럼에도 불구하고 좋게 생각하는 부분은 구글 스타일 가이드 부분이다. 일일이 찾아보기 귀찮을 수 있는데 기초적인 스타일 가이드를 참조해준 것은 고마운 일이다.



       



      알고리즘이라는 게 문제를 해결하기 위한 방법이고 그것을 어떤 도구로 해결방법을 만들지를 공부하는 게 자료구조와 알고리즘을 공부하는 이유라고 생각한다.


       


      그런 의미에서 파트 2 알고리즘 세상 속으로 부터 파트 3 아름다운 그래프와 트리의 세계는 이 책의 핵심 주제인 만큼 설명은 간략하고 밀도 있게 해 준 다음에 바로바로 실습하도록 함으로써 이해를 돕고 연습문제 풀이를 통하여 생각을 좀 하게 한다. 그런 점에서 보았을 때 이미 자료구조와 알고리즘에 대한 전반적인 지식이 있고 파이썬도 다룰 줄 아시는 분들이라면 연습문제만 보고 넘어가도 괜찮을 듯하다.


      여기서 중요한 것은 연습문제만 보고 넘어가도 괜찮다고 한 만큼 연습문제만큼은 꼭 보고 이해하길 바란다. 그래야 이 책을 공부하는 의미가 있다.


       


      정리하자면 제대로 공부해야 되는 책이다. 필자처럼 어설프게 파이썬을 알고 있는 상태라면 조금 버거울 것이고 파이썬을 그래도 책 한 권 제대로 공부한 사람이어야 수월하게 내용과 코드가 이해될 것 같다. 그러니까 내용과 코드를 하나하나 다 작성하고 테스트해보면서 하면 파이썬 복습? 에도 큰 도움이 될 것이고 자료구조 및 알고리즘 학습에도 큰 도움이 될 것이다. 연습문제는 필수라는 것을 다시 유념하고 가자.

    •  시중 서점에서도 컴퓨터 관련 도서 섹션을 보면 파이썬 관련 서적들이 많이 있다. 몇년전엔 자바나 C 관련 서적이 차지하는 비중이 대부분을 차지했었던거 같은데, 인공지능같은 분야가 인기를 끌면서 쉽게 배울 수 있는 파이썬에 대해서 다룬 책들이 많이 나온 것 같다. 



       물론 서점에서도 관련 책을 많이 볼 수도 있지만, 인터넷에서도 무료로 공개된 파이썬 관련 강의나 책들도 많이 등장하고 있다. Coursera나 edX에서도 유명한 대학교에서 제공하는 입문 강좌들도 보면 파이썬을 활용해서 컴퓨터의 구조나 동작원리, 알고리즘 등을 설명하는 내용들이 많이 담겨져 있다. 사실 오늘 소개할 책도 온라인 상에서는 "Introduction to Python & Algorithms" 라는 이름으로 무료로 공개되어 있던 책이었고, 이번 기회에 한글로 번역되어 출판된 책이다.


       


      그림 1. 파이썬 자료구조와 알고리즘


       


       책을 실제로 본 사람은 알겠지만, 여타 파이썬 관련 서적에 비하면 정말 책이 작다. 일반적인 전공책 수준이 아니라 딱 작은 가방에 들어갈 정도로 작아서, 휴대하면서 보기 좋다. 나같은 경우도 출퇴근시간에 잠깐잠깐 꺼내서 봤었는데, 다른 기초적인 내용보다도 내가 실질적으로 알고 싶었던 자료구조와 알고리즘에 딱 초점을 맞춘 책이어서 내용을 익히는데 유용했었다.


       이 책에서 기본적으로 담고 있는 내용은 다음과 같다.



      - 데이터 타입


       파이썬도 여타 언어와 마찬가지로 어떤 데이터를 다루기 위한 배열이나 컬렉션과 같은 기본 데이터 구조들이 구현되어 있다. 어느 언어처럼 특정 데이터 구조를 사용하기 위해서 메모리 할당같은 복잡한 과정이 필요한게 아니라, 어떤게 사용할 것인가에 대한 고민만 하면 되는데, 이에 대한 가이드를 제시하고 있다.



      - 객체지향


       물론 많은 내용을 담고 있는 것은 아니지만, 효율적인 객체지향 프로그래밍을 구현하기 위한 클래스나 모듈 설계에 대한 내용이 담겨져 있다. 기본적인 객체지향 관련 지식을 갖고 있는 사람이라면 간단하게 해당 내용을 보면서 remind를 할 수 있는 수준이다.



      - debugging, file handling, unit test 관련 내용


       이 책의 제목이 딱 "파이썬 자료구조와 알고리즘"이라고 지어졌지만, 원재에서 다룬 내용과 같이 기본 Python 사용하는데 있어 필요한 지식들이 담겨져 있고, 여기에 포함된 내용이 디버깅이나 파일 핸들링, 또 완성된 프로그램에 대한 검증은 어떻게 하는지에 대해서 소개되어 있다. 길게 설명된 건 아니지만, 역시 객체지향 파트와 마찬가지로 예시 코드를 보면서 이해할 수준으로 내용이 소개되어 있다.



      - 추상 데이터 타입


       물론 앞에서 기본 데이터 타입은 구현되어 있다고 했었지만, 보통 대학 자료구조시간에서 배우는 Stack이나 Queue, Linked List 같은 추상 데이터 타입은 구현이 필요하다. 이 부분을 객체지향 방식을 적용해서 내용을 풀어나갔다. 물론 앞의 내용과 마찬가지로 자세한 설명이 곁들여있지는 않지만, 앞부분의 내용을 충분히 이해한 사람이라면, 금방 따라갈만큼 쉽게 설명되어 있다.



      - Dynamic Programming과 정렬/탐색 방법


       그래서 최종적으로 앞에서 다룬 주제들을 활용해서 DP나 정렬/탐색을 실제로 구현한 부분이 후반부에 설명된다. 그런데 앞부분에서 언급된 Python 기초 내용이나 객체지향에 설명된 분량에 비하면 생각보다 분량도 얼마 없고, 짧다. 어떻게 보면 딱 동작원리가 도식화된 부분과 이에 대한 구현만 설명되어 있는거 빼고는 약간 내용이 빈약하다고 생각할 수도 있을것이다. 오히려 파이썬의 고급 알고리즘을 기대한 독자한테는 여기 담고 있는 내용이 조금 실망이 있을 수도 있겠다는 생각이 들었다.


       전반적으로 책의 분량이나 담고 있는 내용이 어떤 주제에 대해서 심도있게 다룬 것은 아니기 때문에 읽은 사람별로 호불호가 조금 나눠질 수 있을지도 모른다. 개인적인 생각으로는 약간 책의 제목이 제목 그대로 자료구조와 알고리즘을 모두 담고 있다고 보기는 조금 어렵지 않나는 생각을 조금 해본다. 물론 파이썬 기본 문법을 숙지한 상태에서 해당 부분만 코드로 빠르게 훑으면서 보려는 사람에게는 이 책이 딱 적당할거 같다. 소위 말하는 "핸드북" 정도로 주제에 대해서만 딱 언급되어 있기 때문에 현업에서도 자료구조를 적용해보려는 사람에게는 빠르게 내용에 접근할 수 있는 편의성을 제공해준다. 


       그래서 이 책이 좋다 나쁘다에 대한 명확한 평을 하기가 어렵다. 다만 확실한 것은 이 책이 짧은 분량 내에서도 기본적으로 구현해볼 수 있는 자료구조나 알고리즘에 대한 설명이 이뤄지고 있어, 빠르게 응용해보려는 파이썬 관련 개발자에게는 다른 책들보다 손쉽게 접할 수 있는 요소가 있지 않나 생각한다. 



      (참고로 최근에 알고리즘 관련 시리즈로 "다이내믹 프로그래밍 완전 정복" 이라는 책이 추가로 출판되었고, 이 책역시 파이썬으로 구현된 예제를 제공한다. DP 관련해서 조금더 관심있게 볼 사람은 해당 책도 찾아보면 좋을거 같다.)


    • 오늘 설명할 책



      인트로


      저번에 소개한 파이썬과 관련된 책! 역시 계속해서 초심자들이 공부하기 좋은 언어 1순위인 Python 그리고 그 언어를 이용해 처음에는 쉽지않은 자료구조와 알고리즘에 관해 풀어내는 책이다. 필자도 두 과목을 힘들어하고 있어서 즐거운 마음으로 책을 펼칠 수 있었다.


       


       



      메인 내용


      전체적으로 흐름은 파이썬에대해 간단히 설명하고 자료구조부터 내용이나온다. 전체적으로 큐, 스택등 필요한 자료구조들만 알려주는데 코드들도 가독성 좋게 적혀있어서 이해하기도 쉽다. 그리고 두번째 파트에서는 알고리즘에 관해서 설명하는데 기본서라서 그런지 심화내용은 적고 기본적인 정렬, 검색, 동적 계획법들만 나와있는데 어떻게 보면 정말 중요한 것들만 뽑아 놓은 것이라서 더욱 읽기 쉬웠다.


       


       



      나의 생각


      파이썬은 대부분 사람들이 배웠을 것이고 그 이후로는 C나 Java를 하는 사람들도 있겠지만 조금더 심화과정으로 가면 알고리즘, 자료구조인데 대부분 책들이 C나 Java로 코드가 적혀져 있어서 이해가 힘들다. 하지만 이 책은 파이썬으로만 이 두 과목을 설명해주니 초심자들에게도 정말 강추 할 수있을만한 책이다. 필자가 C나 java를 공부하기 전에 이 책을 샀으면 얼마나 좋았을까..


       


       


       



      마무리


      아직 C나 JAVA를 배우지 못했는데 간단하고도 필요한 자료구조, 알고리즘을 배우고 싶다면 파이썬으로 혼자 공부 할 수 있는 좋은 책! 역시 IT는 한빛미디어


       


      **이 책은 한빛미디어로부터 지원받아 작성된 서평입니다.**



      구매 링크 : http://www.hanbit.co.kr/store/books/look.php?p_code=B8465804191

    • 최근 한 기사에서 엔지니어들이 가장 선호하는 프로그래밍 언어 1위를 발표하였다. 


       


      엔지니어들이 가장 선호하는 프로그래밍 언어 1위는 파이썬인 것으로 조사됐다.​ 원래 프로그래밍 언어 인기 순위 1위는 자바스크립트였다. 파이썬이 1위를 차지할 수 있었던 덕목은 머신러닝 분야에서의 사용자 증가 이유가 핵심이 아닐까 싶다. 파이썬은 Numpy, Keras 등의 기타 머신러닝 툴과 라이브러리에서 사용하기 쉽기 때문에 머신러닝 엔지니어라면 주 언어로 사용하고 있을 것이다. 


       


      이번에 한빛미디어에서 나온 파이썬 자료구조와 알고리즘 이라는 책에 대해서 리뷰하고자 한다. 필자는 필요할 때만 자료구조를 찾아서 쓰기 일수였는데, 이번기회에 자료구조를 바싹 익혀 더 원활하게 코드를 작성할 수 있도록 책을 완독하였다. 


       


      책이 다소 가벼워서 들고다니면서 완독할 수 있었는데, 책이 얇은거에 비해 목차는 탄탄히 구성되어있다는 점이 아주 마음에 들었다. 또한 이 가벼운 책 안에 자료구조 뿐만아니라 알고리즘도 담고 있어서 한번에 두 가지를 볼 수 있어서 좋았다.


       


      필자는 C나 C++로 자료구조를 익혔던 사람인데, 학부 때 배웠던 자료구조나 알고리즘들을 다시한번 파이썬으로 복습하니 개인적으로 더욱이 복습되어 좋았다. 자료구조를 처음 접하는 사람이라면 다소 약간 어려울 수 있겠지만, 책에서 담고있는 자료구조나 알고리즘 내용은 처음 학습하는 사람도 이해가 쉽게 그림을 적절히 배열하여 설명하고 있어서 어려움은 없을 것 같다고 생각되었다.


       


      이 책을 완독할 수 있었던 이유도 여기에 있었다. 기회가 된다면 한번 더 훑어보면 좋을 것 같은 책이다. 


       


       



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


       







    • 파이썬 자료구조와 알고리즘 책 표지

















      자료 구조와 알고리즘!






      요즘 왠만한 개발자라면 이미 잘 알고 있는 단어들이다.



      아니 당연하게 알아야만 하는 것이라는 게 맞을 듯.






      예전엔 간단한 프로그래밍 언어만 알아도 개발자로 취업이 가능했지만,



      요즘엔 입사 시험에서 직접 알고리즘을 구현할 것을 요구받기도 한다.



      임백준 님의 '누워서 읽는 알고리즘'에서 언급하신 MS의 입사시험이



      요즘 한국에서도 보편화 되어 간다고나 할까.






      자바보다 더 긴 역사를 갖었지만, 상대적으로 인지도가 낮았던 파이썬은



      인공지능의 시대에 자바보다 쉽고 보편화된 언어로 많은 사람들이 배우고 있다.






      하지만 지금까지 나온 책 중에 이 책만큼 파이썬 언어 자체를 깊이 알게한 책은 없는 듯 하다. 대개의 파이썬 책들은 파이썬을 통해 다른 영역 - 예를 들어, AI, Machine Learning, 통계, 라즈베리파이까지 새로운 영역을 도전하기 위한 도구로 설명되어 아주 기초적인 영역에서 제한적으로 소개되곤 했다.






      특히나 자료구조나 알고리즘 관점에서라면 더 제한적이었다.



      아직도 자료구조론의 대부분의 책이 C 언어를 기반으로 작성되어 있고,



      알고리즘 역시 C나 Java 기반인지라 파이썬으로는 이러한 정보가 충분하지 않다.






      파이썬 자료구조와 알고리즘 책은 파이썬에서 사용 가능한 다양한 자료구조들에 대한 이해와 이를 활용한 알고리즘에 대한 설명이 나와 있다.






      출판사의 소개에 따르면 이 책에서 주로 설명하는 내용은 다음과 같다.



















      출판사에서 제공하는 책의 내용 일부











      ※ 주의사항



      이 책에 보시기 전에 반드시 파이썬과 자료구조, 알고리즘에 대한 기본적인 지식이 필요합니다. 이 책의 장점이자 단점은 설명이 많지 않고 간결하다는 점입니다.



      예를 들어 한가지 개념을 설명하고 이에 대한 코드를 보여줍니다. 하지만 이 코드 내에는 자세한 설명은 없습니다. 스스로 돌려보고 이해하라는 저자의 의도가 보입니다만, 아직 파이썬이나 자료구조 이론에 익숙하지 않은 독자는 저자가 무성의하다고 느낄 수도 있습니다.



      따라서 이 책을 보시는 독자는 사진 지식을 갖으시길 권유 드립니다.


















    • SAM_8426.JPG


       



      책 제목이 눈낄을 끌었다.


      자료구조와 알고리즘. 이 두 주제는 파이썬 기초를 배우고 나면 들리기 시작하는 것들이다.


      요즘 취업을 할때 코딩 시험을 보는데, 이때 이런 유형의 문제가 나온다고 하니 더욱 관심이 갔다.


      특히 "기초 튼튼".

       



      오늘은 이 관점에서 책을 보기로 한다.

       


      SAM_8427.JPG


       



      목차를 보면, 아는 챕터도 있고, 처음 들어본 용어가 있는 챕터도 있다.

       



      파이썬의 다양한 분야를 저술한 것 느낌이 든다.

       


      SAM_8428.JPG


       



      이 책은 개념을 먼저 간단하게 설명한 다음, 파이썬 코드를 보여준다.


      여기서 호불호가 갈라질 것 같다.


      일단 설명이 너무 간단하다. 이 말은 중급자들은 아~ 이런 개념이었지 하면서, 기억을 상기시키면서, 바로 소스 코드를 공부하면 좋다.

       



      그런데, "기초 튼튼"을 보고 책을 산 입문자에게는 설명이 짧아 무슨 말인지 모르는 상태에서, 코드를 통해 좀 익히려고 하면, 이 소스 코드를 설명한 부분이 없어서, 파이썬 기초가 약하면 힘들 것 같다는 생각이 들었다. 그래서 입문자에게는 안 맞는 책이라고 본다.

       


      SAM_8429.JPG


       


      이 책의 장점으로 못 들어본 다양한 개념들이 나온다는 점이다. 물론 뚜거운 중급책을 사면, 다 나오는 내용들이지만, 아~ 이런 것을 공부해야 겠다는 마음과 그 개념들의 장점(특히 구현 속도) 간단하게 살펴보는데 매우 좋다는 생각이 들었다. 처음부터 너무 상세하게 너무 많은 것을 보면, 정리도 안되고, 중간에 공부를 그만 두는 경우도 많은데, 이 책은 설렁설렁 읽으면서 공부할 내용을 정하는 용도로 사용하면 좋을 것 같다. 그리고 가장 좋았던 점은 좋은 코딩과 나쁜 코딩 예를 보여주면서 설명하는 방식이었다.


       



      SAM_8430.JPG


       


      파이썬 자료 구조 부분은 일반 파이썬 문법책과 비슷한 느낌이다. 단지 서술 순서가 자료 구조라는 측면에서 접근한 느낌이다. 다 읽고나면 파이썬 책을 읽었는데, 속도랑 각 메소드의 비교를 공부했다는 느낌이 든다. 알고리즘 부분은 이렇게 그림과 설명 부분이 많이 들어갔지만, 알고리즘을 이해하기에는 턱없이 내용이 부족한 느낌이다.


       



      SAM_8431.JPG


       


      소스코드도 이렇게 간단하게 주석을 달아놓았기에, 아는 사람에게는 쉬운 소스코드이나, 기초가 약하면, 본인이 일일이 하나하나 검색하면서 공부해야 한다.


       



      SAM_8432.JPG


       


       



      이 책이 어렵다고 느껴지신다면, 한빛미디어에서 나온 아래 두 책을 소개한다.

       


      http://eonnow.blog.me/221350911898 : [도서리뷰]Hello Coding 한입에 쏙 파이썬 을 읽고...

       


       



      http://eonnow.blog.me/221000996115  :  'hello coding 그림으로개념을이해하는알고리즘' 정말 쉬울까요?

       

       


       

       



      입문자들이 처음 접하는 것을 고려해서, 그림과 풍부한 설명을 한 책으로, 위 책들을 여러번 반복해서 익힌 다음, 이 책을 보면, 좋을 것 같다. 이 책은 중급자용입니다.

       

    •  



      1.jpg


       


       



      프로그래밍언어 인기도의 척도로 자주 인용하는 TIOBE index에 따르면 2019년 8월 현재 파이썬은 Java, C에 이어 3위를 기록하고 있다. 파이썬이 여전히 인기인 이유를 몇가지만 들라면 문법이 간단하고 명확하여 배우기 쉬운 언어인 점, 내부적으로 리스트, 딕셔너리, 스트링, 튜플과 같은 강력한 내장 객체 자료형을 가지고 있는 점, 다른 언어와의 인터페이스도 용이하고 수많은 라이브러리를 활용할 수 있어서 확장성이 좋은 점 정도가 떠오른다. 데이터 분석, 사물인터넷 분야에서도 많이 쓰이고 있으니 거의 만능 수준이 아닌가 하는 생각도 든다. 


      인기 만큼이나 파이썬 관련 책들을 많이 볼 수 있다. 그중에서 '파이썬자료구조와 알고리즘'는 좀 특이한 책 같다. 360페이지의 얇고 작은 체구로 문법, 자료구조에 대해서 다양하게 다루고 있으니 말이다. 처음 이책의 전체적인 내용을 간단히 훑어보았을때 단순히 문법책인줄 알았다. 다시 목차를 찬찬히 보니 전체 분량의 반은 문법(PART1), 반은 알고리즘과 자료구조(PART2,3)에 할애했다. 


       


       


      구성을 살펴보면 


      1. 문법 


          숫자 - 정수, 부동소수점, 복소수, fraction 모듈 , decimal 모듈, 넘파이 패키지 


          내장 시퀀스타입 - 가변성, 슬라이싱 연산자, 문자열, 튜플, 리스트, 바이트와 바이트 배열


          컬렉션 자료구조 - 셋, 딕셔너리, 파이썬 컬렉션 데이터 타입


          구조와 모듈 - 모듈, 제어문, 파일처리, 오류처리


          객체지향 설계 - 클래스와 객체, 객체지향 프로그래밍 원리, 디자인 패턴


          파이썬의 고급주제 - 멀티 프로세스와 멀티 스레드, 가상환경, 프로파일링, 단위 테스트 


       


      2. 자료구조.알고리즘 


          추상데이터 타입 - 스택, 큐, 데크, 힙, 해쉬, 연결리스트


          점근적 분석 - 복잡도, 재귀 알고리즘 


          정렬 - 거품 정렬, 선택정렬, 삽입정렬, 놈 정렬, 카운트 정렬, 병합정렬, 퀵정렬, 힙정렬, 


          검색 - 순차검색, 이진검색, bisect 모듈, 행렬검색,  단봉형 배열


          그래프 기초 - 부분 그래프, 완전 그래프, 가중 그래프


          이진트리 , 트리순회 


       


       


       



      2.jpg


       


       


       



      3.jpg


       


       


       



      4.jpg


       


       


       



      5.jpg


       


       


       


       



      6.jpg


       


       


      [장점] 


       얇고 작은 사이즈라 문법과 자료구조관련 알고리즘 사전처럼  활용하기 좋다.


       


       


      [단점] 


       주제별로 다양한 아이템들을 다루고 제시하고 있지만 역시 지면의 한계로 부족함이 느껴진다.  


       


       


       

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


       




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


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



      미아 스타인 저/최길우 역


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




       










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


       


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


       


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


       


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


       


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


       


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


       


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





    •  



      빅데이터와 인공지능 시대에 파이썬 언어를 습득하는 것은 개발자가 유능한 데이터 과학자가 되도록 도와주며. 필수 불가결한 일이다. 
      텐서플로우, 케라스, 파이토치와 같은 딥러닝 프레임워크는 파이썬 언어를 사용하여 딥러닝 모델을 개발하며, 전처리, 데이터셋 구성, 모델 학습, 평가와 같은 단계에서 파이썬 라이브러리를 활용한다.


      여기에 파이썬 기반의 자료구조와 알고리즘을 마스터한다면 , 보다 전문가다운 데이터 사이언티스로서의 면모를 갖추게 될것이다.




      KakaoTalk_20190827_002112360.jpg


       


       



      이책은 파이썬으로 자료구조와 알고리즘을 해부한 책이다. 
      초반부는 개발자에게 익숙한 자료구조로서 리스트, 셋, 딕셔너리의 메소드를 다루며, 나아가 객체지향 디자인 패턴, 멀티쓰레딩까지 다룬다.
      실제 파이썬언어를 사용하여 스택, 데크, 힙, 해시테이블, 트리 ,그래프도 구현하고, 정렬,검색,동적 프로그래밍과 같은 알고리즘도 소개한다. 
      알고리즘성능과 관련하여 점근적 분석법을 통해 간단하지만 명쾌하게 시간 복잡도를 다룬다.


       



      KakaoTalk_20190827_000943802.jpg


       



      알고리즘 관련하여 실제 코드를 분석하며 저자의 아이디어를 배우는 것만으로도 개발자의 능력을 업그레이드하는 데 많은 도움이 될 것이다. 
      파이썬 언어를 통해 자료구조와 알고리즘을 보다 심도있게 배우고 싶은 개발자라면 일독을 권하고 싶다.


    • 저번학기였나 퍼블릭 블록체인을 수강할때였나,  ZKIP(zero knowledge interactive proof) 알고리즘을 구현하는 것을 이야기하다가, 나는 편하게 파이썬 알고리즘으로 구현하면 된다고 이야기했다.


      교수님이 이야기 하는 것은 그런 알고리즘을 대신해서 이용하는 것이 아닌 zkip 알고리즘 자체를 구현하는 것을 말씀하셨었다. 


       


      대학교 때 간결한 코드를 짜던 친구들은 대부분, 알고리즘에 대해서 잘 이해하지 못하거나 배우지 않았어도, 생각으로 그런 것을 구현하였었다. 


       


      나중에 그런 학문이 있다는 것을 알았는데 그런 학문을 자료구조라고 한다. 


      자료구조는 훨씬 어렵고 심오한 세계를 가지고 있었는데 내가 처음 접한 자료구조를 배웠던 언어는 Turbo C였다. 


      당시에 C++ 언어도 알고 있었는데, 각각의 컴파일러가 서로 다른 해석 체계를 가지고 있다라는 사실을 그 때 처음 알았다. 


       


      다만 그때 파이썬은 스크립트 언어 같다라는 생각이 많았지만, 대학교 2학년때던가 나는 마이크로소프트웨어라는 잡지를 통해서 처음 파이썬을 접했었다. 


      당시만 해도, 파이썬은 C처럼 자료구조를 배울 수 있는 언어라고 생각하지는 않았다. 


      또는 있었는데 내 학문의 깊이가 그 정도가 안되었을지도 모른다. 


      예를 들어서 php로 자료 구조를 하는 사람은 없지 않을까?


       


      책은 처음부터 자세한 내용을 시작한다. 


      파이썬이 가지고 있는 기본적 문법부터 자세하게 설명하고 있다. 


      대화형으로 진행되는 정말 어렵다면 책에서 미리 코딩된 내용을 복사해서 붙여넣기를 해도 좋다. 


       


       


      그 다음부터는 쉬운 알고리즘부터 시작한다. 


      정렬과 배열이 바로 그것인데, 꽤 오랬동안 자료구조를 공부했었는데, 기술사에서 그게 바로 출제가 되어서였는데, 실제로 시험을 외어서 적용하는 것은 쉽지가 않다. 


      각자가 잘하는 언어가 있다면 그것으로도 괜찮은데, 이제 생각해보니까, 파이썬으로 하는 것도 나름 재미가 있을것 같다. 


       


      아주 오래전에 랩실에서 트리를 운영했을 때, 아름답게 펼쳐지는 트리의 모습을 보고 아직도 기억에 남는데, 누군가에게는 이 책이 바로 그런 책이 되면 좋지 않을까 생각해 본다. 


    • book2.png


       



      이번 에 읽은 파이썬 자료구조와 알고리즘” (미아 스타인 지음/ 최우길 옮김)을한마디로 이야기하면 파이썬 활용 사전이라고 할 수 있다. 많은 파이썬 입문/활용서가 장황한 설명과 함께 예제를 하나 하나설명하는 방식인데 반해, 이 책은 필요한 내용만을 언제든 찾아서 볼 수 있는 사전 같은 구성이 특징이다. 옮긴이의 말을 빌면, 파이썬과 자료구조 및 알고리즘을 동시에 습득하고자하는 독자 혹은 개발자/엔지니어 면접을 준비하는 독자에게 적합한 책이라고 한다. 파이썬에 대해 아예 기초가 없는 초보자에게는 다소 어려울 수 있지만, 파이썬이상대적으로 배우기 쉬운 언어이고, 시작하고자 할 때 참고할 만한 자료가 넘치는 것을 감안해 본다면 수긍이가기도 한다. 특히나 이미 파이썬을 알고 있지만, 파이썬의다양한 쓰임새를 미처 맛보지 못한 초/중급 개발자에게 보다 넓은 시야를 갖게 하는 데 있어서는 이만한책도 없는 것 같다.



       책은15개의 챕터로 구성된다. 마지막 15장이 한국어판 부록으로 참고자료를 간략히 다루는 것을 빼면, 14개의큰 분야에 대해 다양한 주제를 다루고 있다. 책의 초반은 숫자, 내장시퀀스 타입, 컬렉션 자료 구조, 구조와 모듈에 대해 제1장에서 제 4장에 걸쳐 파이썬의 기본 데이터 타입을 이용한기본기를 다지는 데 할애한다. 5장부터는 단순히 자료구조 책이라고 하기엔 좀더 심오한 주제인 객체지향설계, 멀티 프로세스와 멀티 스레드 등 파이썬의 고급주제로 발전해 나간다. 그 이후는 알고리즘 파트에 대한 이야기가 펼쳐지는데 제 7장부터는 추상 데이터 타입, 점근적 분석, 정렬, 검색 그리고 동적 계획법에 대해 다룬다. 마지막 파트의 주제는 자료구조 및 알고리즘에서 빼 놓을 수 없는 그래프와 트리이다.



       360여페이지 밖에 안되는 작은 책에 이렇게 많은 주제를 충실히 다루고 있는 데서, 지은이의 내공이 느껴지며, 옮긴이의 번역 역시 칭찬하지 않을 수 없다. 딱딱하고 무미 건조하기쉬운 기술서의 내용을 EBS 인터넷 강의를 보는 듯한 느낌으로 풀어내어 읽기에 부담이 없었다. 파이썬에 대해 좀더 깊이 알고 싶고, 보다 효율적으로 문제를 해결하고자하는 파이써니스트라면 곁에 두고 자주 찾아 볼 만한 책이다.


       

    •  


      파이썬으로 자료구조까지


       


      정녕 개발자가 아닌데도 요새 가장 뜨거운 파이썬과 거기에 기본이 된다는 자료구조까지 올 것이 온 것이다.


      그러기에 더 더욱 도전이 되는 책이다.


       


      기초 튼튼. 핵심 쏙쏙 실력 쑥쑥 책표지에 제대로 정보가 정리되어 있다.


       



      1.jpg


       


      최근에 만난 가장 핵심만 정리되어 있는 책이라는 것이다.


       



      2.jpg


      넌 지금 알고리즘이 땡긴다. 첫 표지만 보고도 이렇게 많은 의미가 내포되어있는 것이다.


       



      3.jpg


       


      뒷표지도 시대감각이 있음이다.


      주요내용이 바로


      -숫자, 시퀀스, 컬렉션 등 파이썬의 데이터 타입


      -모듈, 클래스, 객체지향 등 설계에 필요한 지식


      -동시성, 가상환경, 단위 테스트 등 고급 주제


      -스택, 큐, 데크, 연결리스트, 해시 테이블 등 추상 데이터 타입


      -2차, 선형, 로그 선형 등 접근적 분석을 통한 시간복잡도 이해


      -다향한 시간복잡도의 정렬/검색 알고리즘


      -동적 계획법과 메모이제이션


      -그래프/트리 용어 이해 및 트리 순회 알고리즘 구현


       



      4.jpg


       


      상세하게 설명이 되어 있다.


      이것은 자료구조책인가 코딩책인가?


       



      5.jpg


       


      저자 이야기



      6.jpg


      하얀 책표지



      7.jpg


      초판 서문



      8.jpg


       


      목차



      9.jpg


       


      책장에 꼽았을때 이런 느낌


       



      10.jpg


       


      상세 내용



      12.jpg


       


      한빛미디어의 최고는 바로 미리 보기


      이책이 어떤 책인지 알수 있다는 것이다.



      http://preview2.hanbit.co.kr/books/wpso/


       



      그림1.png


       



      그림2.png


       


      크기도 그리 크지 않고 어려모로 도움이 되는 책이다.


      소실때 배웠던 자료구조보다 훨씬 더 세련되어 진 책이다.


       


    • 20190809_131036.jpg


       






      빠르고 간단하게 파이썬을 훑어볼 있는 책입니다.


       



      보통 자료구조, 알고리즘 책과 달리 책이 작습니다.



      주제에 대해 자세하게 설명하지는 않지만 중요 내용을 빠르게 있다는 장점이 있습니다.


       



      초반부에는 파이썬의 내장 데이터 타입들을 사용하는 방법을 설명하고, 중반부에는 디자인 패턴, 멀티 프로세스/스레드, 테스트등에 대한 설명 그리고 후반부에는 직접 자료구조와 알고리즘을 구현해 있도록 되어 있습니다.


       



      책에서는 파이썬 코드가 많은 부분을 차지하고 있습니다. 파이썬에 맞게 짜여진 코드를 보며 이해할 있는 부분은 책의 장점이라고 생각합니다.


       



      다른 프로그래밍 언어 사용 경험이 있고 파이썬을 처음 시작하시는 분이나, 파이썬을 다시 한번 살펴보고 싶은 분들에게 추천합니다.


       

    • 개발 분야에서 자료 구조와 알고리즘은 무척 중요하다. 어플리케이션을 개발할 때 어떠한 자료 구조와 알고리즘을 사용하느냐에 따라서 엄청한 성능 차이가 발생한다. 그리고 요즘 개발 회사에서는 수많은 지원자들로 부터 이러한 기본 지식을 잘 알고 있는 인재들을 찾기 위해 코딩 면접을 도입하고 있다. 그러므로 개발 회사에 취직을 원하는 사람들은 꼭 자료 구조와 알고리즘을 공부하도록 하자!


       


      개인적으로 자료 구조나 알고리즘을 공부하는데 있어서 파이썬을 선호한다. 기본적으로 언어가 배우기 쉽고 많은  자료 구조를 제공하고 있어서 알고리즘 문제 풀이에 집중할 수 있기 때문이다.


       


      이 책은 크게 3가지 파트(자료 구조, 알고리즘, 그래프)로 구성되어 있다. 자료 구조 파트에서는 파이썬에서 제공하는 주요 자료 구조의 사용법과 각각의 기능 (데이터 추가, 삭제, 검색 등) 수행 시의 시간 복잡도를 잘 설명해주고 있다. 각 자료 구조의 특징들은 어디서나 공통적이므로 잘 배워두면 다른 개발 언어에서도 자료 구조를 쉽게 사용할 수 있을 것이다.


       


      알고리즘 파트에서는 추상 데이터 타입, 점근적 분석, 정렬, 검색, 동적 계획법을 다루고 있다. 실제 개발 시에 문제를 해결하는데 사용될 수 있는 방법들이므로 잘 공부해두면 실전에 많은 도움을 받을 수 있다. 단, 해당 책은 알고리즘만을 전문적으로 다루는 책은 아니므로 설명이 부족하다고 느낄 수 있다. 그 때는 인터넷이나 다른 참고 문헌을 이용하자. 그래프와 트리도 코딩 면접이나 알고리즘 문제 사이트에서 많이 나오는 단골 분야이므로 반드시 알아두도록 하자.


       


      350여 페이지에 많은 내용을 담으려다 보니 일부 설명이 부족한 느낌이 없지는 않다. 하지만 핵심 내용이 잘 요약되어 있고 처음 자료 구조나 알고리즘을 공부할 때 어떤 것들을 공부해야 하는지를 가늠하는 방향표로써는 훌륭한 책이라고 생각한다. 그리고 각 장마다 포함된 연습 문제는 꼭 직접 풀어 보자. 직접 풀어야 자신의 지식이 된다.

    • 이 책은 한빛미디어의 '나는 리뷰어다' 이벤트를 통해 신청한 책이었습니다.


       



      KakaoTalk_Photo_2019-08-09-01-20-07.jpeg


       


       


      요즘 파이썬 많이들 공부하고 학습하지만 그래도 저는 이상하게 파이썬은 잘 안 익혀지더라고요 이전에도 책을 다른 책 봐도 나중에 다 까먹고;


       


      주로 자바 백 엔드 개발을 하다 보니 업무 수행하다가 다시 개인 공부할 때는 파이썬 하다 보면 두 언어 간의 차이 때문에 문법을 이해하는 데 조금 걸리더라고요. 저는


       


      일단  전반적으로 책은 되게 얇아 보이지만 속 내용은 알찬 책이었습니다.


       


      특히 휴대하기가 너무 좋습니다. 짱입니다~


       


      특히나 요즘 업무가 많아서 책을 지하철에서 주로 보았지만


       


      나름 이해하기 좋은 코드 예제에 결과 값 또한 책에 적혀 있어서


       


      머리로 코드를 컴파일 및 디버깅하면서 보기엔 좋은 책이었습니다.


       


      문법 또한 내용이 반이었지만 안에 내용에서는 디자인 패턴도 간략히


       


      데커레이터 패턴,옵서버 패턴,싱글턴 패턴 등을 설명하고 있습니다.


       


      그리고 좋은 습관에서 가상환경 잡는 법과 단위테스트가 주로 좀 자세히 봤습니다.


       


      저는 자바 개발자라서 단위테스트에서 파이썬은 어떤 것을 쓰는지 좀 궁금해서 ㅋ;;


       


      알고리즘부터는 일단 제가 파이썬 공부를 이제 막 시작해서 그런지 책을 보다가 궁금한 내용은 일단은 코딩하고 디버깅을 좀 해야 이해가 되더라고요


       


      이 책을 보시는 분들께는 이런 방법도 추천해 드립니다


       


      그리고 이 책은 일단은 적어도 2번 정도는 읽을 생각이라서 모르는 부분이 나오더라도


       


      당황하지 말고 건너뛰면서 읽었습니다 -_-;


       


      자료구조랑 알고리즘도 같이 한 권에 읽고 적어도 2번 정도 읽고 싶은 책을 고르신다면 이 책을 추천해 드립니다 ^^


       


      한빛 출판사의 나는 리뷰어다 활동을 통해 도서를 받아 작성한 리뷰입니다.


       


      #파이썬자료구조와알고리즘 #자료구조 #알고리즘 #파이썬 #한빛미디어 #나는리뷰어다




    • 알고리즘은 어렵고 복잡하다는 느낌을 받고 있고 프로그래밍을 해온지 생각보다 오래 되었음에도 알고리즘은 어려운 분야 중 하나다. 그래서 이번에도 조금이라도 익숙해 지고자 이 책을 읽게 되었다. 일단 알고리즘같이 어려운 내용은 너무 두꺼우면 지치기 쉬운데 다른 책에 비해 가볍고 얇은 점이 마음에 들었다.


      요즘 외출 할 때 이 책을 자주 들고 나갔었는데 들고 다니기에 부담스럽지 않은 크기와 무게다. 또 책이 두껍지 않다보니 언제 이 어려운 알고리즘을 언제 다 읽나? 하는 생각에서도 벗어날 수가 있다.


      그리고 알고리즘 뿐만 아니라 파이써닉한 코드, 효율적인 코드를 작성하기 위한 팁들이 도움이 되었다.





      그리고 프로그래밍 서적을 읽을 때 가장 먼저 하는 건 소스코드가 온라인에 공개되어 있나를 보는데 이 책의 소스코드도 다음의 URL에 공개가 되어 있다.



      아래 저장소에 Cracking the Code Interview(코딩 인터뷰 완전분석) 라는 유명한 책의 코드를 Python 으로 썼다는 내용이 있다. 기존 코딩 인터뷰 완전분석 책에 비해 가볍게 읽을 수 있지만 핵심적인 내용들 위주로 정리되어 있다는 점이 좋다. 이 책과 함께 아래 저장소에서 소개하는 코딩 인터뷰 완전분석이라는 책도 너무 유명한 책이라 코딩인터뷰를 준비하고 있다면 함께 보면 좋을 것 같다.





      이 책의 목차를 보면 기본적인 자료구조를 알고리즘과 함께 풀어볼 수 있도록 구성되어 있다.





      그리고 이 책의 좋은 점 중 하나는 테스트코드가 함께 있다는 것이다. 그래서 테스트코드를 작성하는 습관까지 함께 익힐 수 있게 되어 있다.






      읽으면서 가장 마음에 들었던 부분은 6.2 좋은 습관 과 6.3 단위 테스트부분이었다. 여기에는 가상환경, 디버깅, 프로파일링, 단위 테스트 내용이 나오는데 프로그래머로 성장하는데 있어 챕터 이름 그대로 좋은 습관이라 생각된다.


      또, 위에서 소개했던 코딩 인터뷰 완전분석 이라는 책의 소스코드 위치도 함께 소개한다. 코딩 인터뷰 완전분석이라는 책도 코딩테스트를 공부하는 사람들에게 필독서인데 이 책을 통해 파이썬으로 가볍게 읽어보고 코딩 인터뷰 완전분석을 읽으면 좋을 거 같다는 생각이 든다.



      아래 책은 Cracking the Code Interview의 Python 버전 저장소이고 이 책보다 조금 난이도가 있다. 그래서 입문자라면 이 책을 먼저보고 아래 저장소를 보고 따라해 보는 걸 추천한다.

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


       



      KakaoTalk_20190804_235721529.jpg


       


      파이썬을 주로 사용하지는 않지만, 자동화 스크립트를 작성할때 파이썬을 사용하곤 합니다.


      라이브러리도 많고, 작성하기 쉬운 점 때문인데, 필요할떄만 사용하다 보니 사용하는 문법이 한정적이고, 다른 언어에서 사용하던 문법 습관이 코드에 그대로 반영되곤 했습니다.


       


      제가 이 책을 읽게 된 동기는, 기존의 파이썬 문법책들은 파이썬이라는 언어를 알아가기엔 좋지만... 


      실제 자주 사용하지 않을 것 같은 내장함수까지 자세히 다루고 있어 끝까지 잘 안읽게되기 때문입니다. ㅎㅎ...


      파이썬이라는 언어를 자주 사용하지는 않기에, 실제로 필요한 코드를 작성할때 내가 알고있는 문법으로 작성한것이 최선인가에 대한 의문이 들게 되었습니다.


       


      그런 의미에서, 다른 언어로 작성해보았던 자료구조와 알고리즘을 파이썬 언어로 다시 작성할 수 있다면 더 재밌고, 파이썬에 익숙해지지 않을까 싶어서 읽게 되었습니다.


       


      이 책은, 파이썬 기초 책이 아니기 때문에 처음 파이썬을 접하는 분들이 보신다면 쉽진 않을 것 같습니다.


      파이썬의 특징이 글의 중간중간 나오지만, 직접적으로 파이썬은 어떤 언어이고, 어떤 특별한 특징을 가졌는지에 대한 순차적인 설명은 아니기에 만약 파이썬이 처음이신분은 기본 문법책과 함께 보시면 좋을 것 같습니다.


       


      각 파트들이 자료구조 및 알고리즘을 위한 문법 및 내장함수 -> 자료구조 -> 알고리즘 식으로 구성되어있으며.


      각 알고리즘을 해결하기 위한 디테일한 요소까지 다루고 있습니다.


      또한 알고리즘도 함께 설명되어 있어서 책의 이름대로 파이썬과 자료구조를 동시에 배울 수 있습니다.


       


      목차를 보면 알겠지만 놀랍게도 객체지향 프로그래밍 및 디자인 패턴도 다루고 있으며, 알고리즘 문제 해결에서 가장 기본이 되는 복잡도, 실행시간 계산도 다루고 있습니다.


       개인적으로 직접 문제-예제 형식으로, 특정 문제를 풀어나가는 방식이기 때문에 간단하게 문법들만 설명되어 있던 다른 책들보다 더 많은 도움이 된 것 같습니다.  


       



      KakaoTalk_20190804_235701622.jpg


       


       


      이 책만 보면 파이썬 문법과 알고리즘은 마스터 했다 까지는 아니더라도, 분명 파이썬을 이용하면서 어떻게 작성해야 하는가 고민했던 부분에 대해서 어느정도 해답을 찾을 수 있을 것 같습니다.


       


       


      한빛출판사의 도서를 제공받아 작성한 리뷰입니다


       

    •  



      6460.jpg


       


      컴퓨터관련 전공자들이라면 자료구조와 알고리즘이라는 용어를 전공에서 중요한 과목이라고 생각할 것이다. 적어도 내 경우에는 그렇다. 나는 C와 C++언어를 이용한 자료구조와 알고리즘을 수강했었는데, 그 당시는 이해하기 어려웠던 기억이 있다. 이제는 그 개념을 많이 이해하고 다양한 방법으로 자료구조와 알고리즘을 구현하다보니 많이 익숙해졌다. 다른 언어로 구현하는 자료구조와 알고리즘을 만나도 그 근간은 비슷할 것이라는 생각이 내 머리속에 잡혔다.


       


       



      요즘 파이썬에 대해 열심히 공부중인데, 그 와중에 한빛미디어에서 출간된 파이썬 자료구조와 알고리즘 이라는 책을 만나게 되었다.



      이 책의 원제목은 An introduction to Python & Algorithms 이고 관련자료는 깃허브를 참조하면 좋다.



      (https://github.com/bt3gl/Python-and-Algorithms-and-Data-Structures)






      파이썬에 대해선 완전 초보인데, 갑자기 공부해야할 학습 레벨이 최상위권으로 올라가는 느낌이다. 



      저자는 파이썬을 통해 거의 의사코드(pseudo code) 그대로 로직을 작성할 수 있다는 점에서 알고리즘 학습에 유용하다고 얘기한다. 그래서 이 책에서는 개발자에게 필수적인 자료구조와 알고리즘에 대해 파이썬의 기능을 최대한 활용하여 보여주고 있다.


       



      이 책은 PART1 1 자료구조, PART 2 알고리즘, PART 3 그래프와 트리 로 구분되어 있다.


       



      PART 1 자료구조에는 



      숫자, 내장 시퀀스 타입, 컬렉션 자료구조, 구조와 모듈, 객체지향 설계, 파이썬 고급 주제 에 대한 내용을 다루고 있고, 2장과 3장의 끝에는 연습문제가 수록되어 있어 연습문제에 나온 코드를 통해 학습한 내용을 복습할 수 있다.



      PART 1은 자료구조 뿐만 아니라 파이썬 문법, 객체지향 설계에 대한 설명도 포함하고 있다. 각 항목이나 메서드에 대한 설명을 간단히 하고 예제를 많이 보여줌으로써 사용자에게 예제를 통한 학습을 이끈다.


       






      6461.jpg


       






      PART 2 알고리즘에는



      추상 데이터 타입, 점근적 분석, 정렬, 검색, 동적 계획법 에 대한 내용을 다루고 있다. 스택, 큐, 데크, 리스트, 해시테이블 같은 기본적인 내용부터 정렬(sort), 검색(search)와 같은 심화된 알고리즘의 내용을 볼 수 있다.


       



      6462.jpg


       



      PART 3 그래프와 트리에는 



      그래프 기초, 이진 트리, 트리 순회,한국어판 참고자료에 대한 내용을 다루고 있다. PART 2에서의 내용보다 더 심화되어 그래프와 트리와 같은 고수준 알고리즘의 내용을 볼 수 있다.


       



      이 책에서는 책 내용 외에 부가적인 설명은 역주로 처리하여 참고할만한 사이트 정보를 함께 제공한다. 이 책을 보면서 자료구조와 알고리즘에 대한 개념도 이해하고 파이썬을 이용한 프로그래밍 실력도 함께 키울 수 있을 것 같다. 


       



      책에 나온 예제 코드는 아래의 깃허브 저장소에서 다운로드받을 수 있으니 참조하면 좋다.



      https://github.com/bt3gl/Python-and-Algorithms-and-Data-Structures


       



      책의 예제 코드를 직접 코딩해보거나 깃허브에서 다운로드 받아서 하나하나 분석해본다면 자료구조와 알고리즘이 쉽게 이해될 것이다.


       



      한빛출판사의 나는 리뷰어다 활동을 통해 도서를 제공받아 작성한 리뷰입니다


       



      #파이썬자료구조와알고리즘 #자료구조 #알고리즘 #파이썬 #한빛미디어 #나는리뷰어다

    • #이 책은 한빛미디어의 '나는 리뷰어다' 이벤트를 통해서 수령한 책입니다. 프로그래밍에 관한 책은 선구안이 생길 정도로 많은 책을 본 것도 아니고, 프로그래밍에 대해서 깊은 이해를 하고 있는 것도 아니라서 기회가 될 때마다 최대한 많은 책을 보려고 노력하고 있습니다. 이런 관점에서, 어느정도 검증된 출판사라고 할 수 있는 한빛미디어에서 출간한 서적을 접해볼 수 있는 '나는 리뷰어다'라는 이벤트가 퍽 유익한 이벤트라고 생각합니다. 관심 있는 분들은 응모해보시길 추천드립니다. 책을 무료로 받았다고 해서 제 서평에 영향을 미치지는 않습니다.


       


       이 책은 제목에도 들어있는 바와 같이 자료구조와 알고리즘에 대한 책입니다. 컴퓨터 과학을 이루는 중요한 축 중 하나인 개념들이라서, 프로그래밍 공부를 하는 입장에서 아주 중요한 개념들이라고 할 수 있습니다. 하지만 중요한 개념들은 대체로 비슷한 특징을 가지고 있습니다. 이는 재미가 없다는 것입니다. 자료구조와 알고리즘도 마찬가지입니다. 분명 중요한 개념이라는 것을 인지하고 있고, 제대로 공부할 경우 큰 도움이 될만한 도구라는 것은 알겠는데, 막상 책을 펼치면 참 재미가 없습니다. 특히 알고리즘을 다룬 책들은 보통 수학 공식처럼 보이는 의사코드(수도코드, Pseudo-code)로 되어 있는 경우가 많아서 책을 읽는 과정 자체가 쉽지 않고, 자료구조는 지루하다는 점이 치명적입니다. 그리고 이 책도 큰 틀에서 보면, 재미가 없었습니다. 다만, 그 중에서는 조금 나았습니다. 


       


       책의 소개 중에 이런 문구가 있습니다. '파이써닉한 코딩으로 배우는 핵심 알고리즘'. 책을 읽고 난 후에 느낀 감상도 비슷합니다. 알고리즘 파트나 자료구조 파트가 대부분 설명보다는 파이썬 코드의 분량이 상당합니다. 그래서 지루함이 조금 덜 합니다. 일단 코드는 설명과 달리 짧고 돌려볼 수 있기 때문입니다. 다만 코드 베이스로 쓰여진 책이기 때문에, 그냥 책을 주욱 읽는다고 경험치가 쌓이는 느낌이 들지는 않습니다. 특히 책의 코드에 아주 친절한 주석이 달려있다던지, 설명 파트가 충실한 느낌(분량이 분량인지라)이 드는 편은 아니라서 코드를 직접 보면서 꼭꼭 씹어먹어야 소화가 되고, 내 경험치가 쌓이는 느낌을 받을 수 있을 것 같습니다. 


       


       책의 물리적인 사이즈가 작고 각 개념이 연결성을 갖는 것이 아니라 개별적으로 구성되어 있다는 점은 위에서 언급한 특징을 한층 심화시키면서 동시에 유용합니다. 우선 책의 사이즈가 작은 만큼 설명이 충실한 편은 아니라서 소화시키는데 노력이 퍽 요구됩니다. 그리고 각 개념들이 개별적으로 구성되어 있어서 하나를 소화시켰다고 다음 개념의 이해가 쉬워지는 편도 아닙니다. 하지만 다시 생각해보면, 어차피 알고리즘이나 자료구조라는 이름으로 묶인 개념들이 유기적으로 연계되어 하나의 큰 개념을 구성하는 것이 아니라, 카테고리화 해놓은 것에 불과하기 때문에 개별적으로 구성되는 것이 정상이긴 합니다. 


       


       이런 특징은 실용적인 면에서 장점이 될 수 있다고 생각합니다. 어차피 각 개념이 연결된 것이 아니기 때문에, 자료구조나 알고리즘이나 읽다가 지루하거나 재미가 없으면 그냥 다음 개념으로 바로바로 넘어가면 됩니다. 저 같은 경우, 그냥 2~3번 읽을 생각을 하고 힘 빼지 않으면서 잡지 보듯이 보다가 관심이 있는 주제에 대한 부분에서 멈춰서 설명 보고 코드 보고, 코드 한번 손코딩으로 써보고 다시 잡지 보듯이 넘기면서 읽었습니다. 그렇게 4번 정도 보니, 막상 크게 힘을 들이지는 않았는데 대부분의 개념을 1회 이상은 본 것 같습니다. 그리고 작은 책의 사이즈는 그냥 주머니에 책을 넣고 다니면서 읽는데 도움이 되었습니다. 앞서 말한 바와 같이 가볍게 잡지 보듯이 본 까닭에 시간을 잡고 한 자리에서 책을 읽은 시간이 얼마 안됩니다. 책을 읽은 대부분의 시간이 잠깐잠깐 시간이 날 때 가볍게 한 두개의 주제를 읽는 식으로 채워졌습니다. 


       


       그런데 별거 아니라고 생각한 이런 특징들이 생각보다 별거였습니다. 그동안 자료구조와 알고리즘에 대한 책을 사놓고 중간에 접어버리거나, 스트레스 왕창 받다가 숙제 해치우듯이 1~2시간쯤 잡고 후르륵 넘겨버린 적이 대부분이었는데, 이 책은 '프로그래밍 잡지 보듯이 보자'라는 마음을 먹어서 그런지, 되게 가볍게 스트레스 안받으면서, 각 주제에 나름대로 몰입을 해가면서 책을 볼 수 있었습니다. 이 점이 별거 아닌 것 같은 이 책이 가진 장점이 생각보다 별거가 되게 만들었습니다. 물론 지금도 주요 알고리즘에 대해서 아주 명확하게 설명을 해보라고 하면, '어… 음…' 이라고 할 것 같기는 한데, 대충 이름을 들었을 때, '대충 ~이랬던 것 같은데…'라는 생각이 들긴 합니다. 사실 이렇게 짧은 단상만 떠오르면 필요할 때 그냥 구글링을 해서 찾아보면 되니까 확실히 아예 몰랐을 때보다는 경험치가 쌓였다고 생각합니다. 그리고 코드가 의사코드나 수학적 코드가 아니라 파이썬으로 되어 있어서 큐를 직접 파이썬으로 구현해보라고 하면, 꾸역꾸역 구현을 할 수는 있게 되었습니다. (물론 아름답고 효율적인 파이써닉한 코드일지는 모르겠습니다.)


       


       사실 이 책을 읽으면서 배운 점이 별 것은 아닙니다. 지금도 스택오버플로우나 깃헙에 가면 좋은 코드를 바로바로 만날 수 있습니다. 다만 책을 읽기 전과 후의 차이라면, 예전에는 위와 같은 사이트에서 코드를 봤을 때, '어…' 하면서 겁이 나거나 멍을 때렸다면, 이젠 대충 이런 구성으로 되어 있구나라고 읽을 수는 있게 되었습니다. 사실 큰 변화가 아니라면 아닐 수 있지만, 제 입장에서는 나름 책 한 권 읽은 것치고는 많이 배웠다는 생각이 들어서 참 유익했다고 생각합니다. 


       


       추가적으로 사실 이벤트에 참여하면서 더 읽어보고 싶었던 책은 '파이썬 날코딩으로 알고 짜는 딥러닝'이라는 책이었습니다. 유용한 라이브러리를 활용하는 것도 물론 좋지만, 날코딩을 통해 머신러닝/딥러닝의 원리를 습득하는 것도 의미가 있다고 생각했기 때문입니다. 그런데 어쩌다보니 읽게 된 이 책도, '파이썬 날코딩으로 알고 짜는 자료구조와 알고리즘' 정도는 되는 것 같아서 애초에 희망했던 학습 방법은 충족이 된 것 같습니다. 목적으로 했던 대상은 아니지만요. :) 


       



      20190725_182359.jpg


       


       

  • 내용이 없습니다.
  • 내용이 없습니다.
닫기

해당 상품을 장바구니에 담았습니다.
장바구니로 이동하시겠습니까?