한빛출판네트워크

IT/모바일

똑똑한 코드 작성을 위한 실전 알고리즘

파이썬 예제로 문제 해결 전략 익히기

한빛미디어

번역서

판매중

똑똑한 코드 작성을 위한 실전 알고리즘
좋아요: 6
  • 저자 : 조지 하이네만
  • 역자 : 윤대석
  • 출간일 : 2022-05-20
  • 페이지 : 296쪽
  • ISBN : 9791162245644
  • 물류코드 :10564

합계 : 17,820

도서판매처

  • 더 효율적이고 창의적인 코드 작성을 위한 알고리즘 사용법

    어려운 개념이나 수식 없이 그림과 예제로 학습하기

     

    좀 더 똑똑한 코드로 프로그램 성능을 향상하고 싶다면 이 책을 펼쳐보자. 이 책은 소프트웨어 개발에서 가장 많이 활용되는 핵심 알고리즘을 각각 언제, 어떻게 사용하면 좋은지 단계별로 상세히 알려준다. 알고리즘 진행 과정을 시각화한 그림과 함께 예제 코드를 한 줄씩 알기 쉽게 설명하며, 성능을 직접 측정해볼 수 있도록 실행 가능한 코드를 제공한다. 장마다 수록한 연습 문제는 문제 해결 능력을 향상해 코딩 인터뷰를 준비하는 데도 도움이 된다.

    전문 개발자뿐 아니라 자신의 연구 분야에 알고리즘을 적용하려는 사람 모두에게 유용하다. 컴퓨터 과학에 관한 배경지식이 없어도 프로그래밍 언어를 다뤄본 경험이 있으면 충분하다. 예제 설명과 샘플 코드는 직관적이고 접근성이 높은 파이썬으로 작성되었다. 다양한 문제에 대한 접근 방식과 풀이법을 살펴보면서 알고리즘의 원리부터 응용 방법까지 확실하게 익혀보자.

     

     

    상세이미지_700_똑똑한 코드 작성을 위한 실전 알고리즘.jpg

  • [저자] 조지 하이네만

    소프트웨어 엔지니어링 및 알고리즘 분야에서 20여 년간 경험을 쌓은 컴퓨터공학과 교수다. 『Algorithms in a Nutshell, 2nd ed.』(O’reilly, 2016)의 저자이며 오라일리 사파리에서 <Exploring Algorithms in Python>, <Working with Algorithms in Python>을 비롯한 동영상 강의를 다수 제작했다. 논리 및 수학 퍼즐에 관심이 많아 스도쿠의 변형인 Sujiken 퍼즐과 Trexagon 퍼즐을 발명했다.

    [역자] 윤대석

    12년간 임베디드 리눅스 커널 개발, 윈도우 애플리케이션 개발, 리얼타임 운영체제에서의 BSP 개발, 백엔드 개발 등 다양한 개발 경험이 있으며 항상 기본에 충실하고자 노력하는 엔지니어다. 알고리즘과 운영체제를 꾸준히 공부하고 있으며, 오픈 소스 리눅스 커널 분석 및 수정 활동에 참여하고 있다. 한빛미디어에서 『쓰면서 익히는 알고리즘과 자료구조』(2021)를 집필하고 『러닝 Go』(2022)를 번역했다.

     

  • CHAPTER 1 문제 해결

    1.1 알고리즘이란

    1.2 리스트에서 가장 큰 값 찾기

    1.3 주요 연산 횟수 계산하기

    1.4 모델로 알고리즘 성능 예측하기

    1.5 리스트에서 가장 큰 두 수 찾기

    1.6 토너먼트 알고리즘

    1.7 시간 복잡도와 공간 복잡도

    1.8 요약

    1.9 연습 문제

     

    CHAPTER 2 알고리즘 분석

    2.1 경험적 모델로 성능 예측하기

    2.2 곱셈 성능 예측하기

    2.3 성능 클래스

    2.4 점근적 분석

    2.5 모든 수행 계산하기

    2.6 모든 바이트 계산하기

    2.7 이진 배열 탐색

    2.8 이진 배열 탐색으로 리스트에서 값 찾기

    2.9 이진 배열 탐색의 또 다른 기능

    2.10 알고리즘 성능 비교

    2.11 곡선 피팅 vs. 상/하한

    2.12 요약

    2.13 연습 문제

     

    CHAPTER 3 해싱

    3.1 키와 연관된 값

    3.2 해시 함수와 해시 코드

    3.3 (키, 값) 쌍에 대한 해시 테이블 구조

    3.4 선형 조사로 충돌 검출 및 해결하기

    3.5 연결 리스트를 사용한 분리 연쇄법

    3.6 연결 리스트에서 엔트리 삭제하기

    3.7 개방 주소법과 분리 연쇄법 평가하기

    3.8 동적 해시 테이블

    3.9 동적 해시 테이블 성능 분석하기

    3.10 완벽한 해싱

    3.11 (키, 값) 쌍 순회하기

    3.12 요약

    3.13 연습 문제

     

    CHAPTER 4 힙

    4.1 최대 이진 힙

    4.2 (값, 우선순위) 삽입하기

    4.3 우선순위가 가장 높은 값 제거하기

    4.4 배열로 이진 힙 구성하기

    4.5 엔트리 이동의 구현

    4.6 요약

    4.7 연습 문제

     

    CHAPTER 5 정렬

    5.1 교환을 통한 정렬

    5.2 선택 정렬

    5.3 성능이 O(N2)인 정렬 알고리즘의 구조

    5.4 삽입 정렬과 선택 정렬의 성능

    5.5 재귀와 분할 정복

    5.6 병합 정렬

    5.7 퀵 정렬

    5.8 힙 정렬

    5.9 O(NlogN) 알고리즘의 성능 비교하기

    5.10 팀 정렬

    5.11 요약

    5.12 연습 문제

     

    CHAPTER 6 이진 트리

    6.1 시작하기

    6.2 이진 탐색 트리

    6.3 이진 탐색 트리에서 값 탐색하기

    6.4 이진 탐색 트리에서 값 제거하기

    6.5 이진 탐색 트리 순회하기

    6.6 이진 탐색 트리 성능 분석하기

    6.7 자가 균형 이진 트리

    6.8 자가 균형 이진 트리 성능 분석하기

    6.9 이진 탐색 트리를 (키, 값) 심볼 테이블로 사용하기

    6.10 이진 탐색 트리를 우선순위 큐로 사용하기

    6.11 요약

    6.12 연습 문제

     

    CHAPTER 7 그래프

    7.1 그래프로 문제 모델링하기

    7.2 깊이 우선 탐색으로 미로 풀기

    7.3 너비 우선 탐색으로 미로 풀기

    7.4 유향 그래프

    7.5 가중치 그래프

    7.6 다익스트라 알고리즘

    7.7 모든 쌍의 최단 경로 문제

    7.8 플로이드-워셜 알고리즘

    7.9 요약

    7.10 연습 문제

     

    CHAPTER 8 정리

    8.1 파이썬 내장 데이터 타입

    8.2 스택 구현하기

    8.3 큐 구현하기

    8.4 힙과 우선순위 큐 구현

    8.5 이후 학습

  • 핵심만 골라 확실하게 익히는 파이썬 알고리즘

     

    알고리즘 학습에서 가장 중요한 것은 문제 해결 능력입니다. 단순히 각 알고리즘의 기능을 개별적으로만 공부할 것이 아니라, 특정 문제가 주어졌을 때 여러 가지 접근법을 적용해보고 서로 다른 알고리즘의 성능을 비교할 수 있어야 합니다.

     

    이 책은 정렬, 이진 탐색, 그래프 등 컴퓨터 과학에서 가장 많이 활용되는 핵심 알고리즘을 사용해 문제를 효율적으로 해결하는 방법을 알려줍니다. 어려운 수식이 아니라 간결한 파이썬 코드 및 대응되는 그림을 따라가면서 알고리즘의 원리를 쉽게 이해하도록 안내합니다. 알고리즘 구현 코드를 한줄 한줄 살펴보고 각 단계를 시각화한 도식과 함께 진행 과정을 차근차근 짚어봅니다. 예제 코드를 직접 실행한 성능 분석 표를 통해 서로 다른 알고리즘의 성능 측정치를 직관적으로 비교해보고, 마지막으로 연습 문제를 풀어보며 각 장에서 배운 내용을 응용해봅니다.

     

    예제와 연습 문제는 파이썬으로 작성되었습니다. 파이썬 코드는 간결하고 직관적이며 다양한 유형의 문제에 대응하기 쉬워, 기술 면접이나 시험을 위해 알고리즘을 공부한다면 파이썬이 좋은 선택지입니다.

     

     

    대상 독자

    • 컴퓨터 과학의 핵심 알고리즘을 쉽게 익히고 싶은 사람
    • 코드를 개선해 프로그램 성능을 높이고 싶은 사람

     

    주요 내용

    • 컴퓨터 과학과 소프트웨어 공학의 핵심 알고리즘을 살펴봅니다.
    • 분할 정복, 동적 프로그래밍, 탐욕 알고리즘 등 효율적인 문제 해결 전략을 학습합니다. 
    • 코드를 분석하고 빅오 표기법을 사용해 시간 복잡도를 평가합니다.
    • 파이썬 라이브러리와 자료구조를 사용해 알고리즘으로 문제를 해결합니다.
    • 중요한 여러 알고리즘의 주요 단계를 이해합니다.

     

    추천사

    이 책은 코드의 효율을 향상하는 다양한 알고리즘을 소개한다. 컴퓨터 과학에서 사용하는 자료구조와 기본 알고리즘을 알려주어 독자가 더 효율적인 프로그램을 작성하도록 돕는다. 코딩 인터뷰를 준비하는 개발자와 지망생에게도 유용한 가이드가 될 것이다.

    즈비 갈릴리, 조지아 공과대학교 명예 컴퓨팅 학장 겸 프레더릭 G. 스토리 의장


    • 정리 : 보통 우리나라에서 나온 책들하고 조금 다른 책의 순서로 구성되었다. 보통의 책들은 시간복잡도를 다루고



      배열기반 문제, 재귀, 연결리스트 , 스택 , 큐, 트리, 힙, 해시테이블, 그래프, 정렬 알고리즘 등이 나오는데 이런것들이 순서가 좀 달랐다.






      장점은 그림이 많고 책이 얇은데 필요한 내용의 빠짐은 없었다. 다른 알고리즘 책들은 책이 너무 두꺼워서 들고다니기 부담스러웠는데 책에 쓸데없는 내용이 없어서 그런거 같다.


       



      "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

    •  



      1.jpg


      알고리즘은 컴퓨터 과학의 핵심이자 정보화 시대의 필수 요소입니다. 매일 일어나는 수십억건의 인터넷 요청에 응답하기 위한 검색 엔진에 사용되며, 인터넷에서 통신할 때 개인정보를 보호해줍니다. 또한 알고리즘은 맞춤형 광고로부터 온라인 가격 견적까지 수많은 분야에서 소비자에게 점점 더 많이 노출되고, 뉴스 미디어는 알고리즘이 무엇이며 무엇을 할 수 있는지에 관한 논의로 가득한 상황입니다.


       


       



      알고리즘이란 주어진 문제를 논리적으로 해결하기 위해 필요한 절차, 방법, 명령어들을 모아놓은 것입니다. 넓게는 사람 손으로 해결하는 것, 컴퓨터로 해결하는 것, 수학적인 것, 비수학적인 것을 모두 포함하는 의미입니다.


       



      제가 이 책을 선택한 이유는 이 책이 코드에 당장 적용해 효율을 향상해주는 다양한 알고리즘을 소개하며 파이썬으로 작성된 예제 코드를 제공하기 때문입니다.


      현재 파이썬은 다양한 분야에서 사용되며, 가장 인기 있고 사용자 친화적은 프로그래밍 언어 중 하나이며 이 책에서는 알고리즘을 최대한 시각화하고 상세한 설명으로 독자의 개념 이해를 돕끼 때문에 훨씬 학습하기 수월합니다.


       



      이 책의 특성은 알고리즘이 어떻게 구성되는지 단계별로 꼼꼼히 설명해 기초를 실전에 잘 적용하도록 이끌준다는 점입니다. 가장 많이 활용되는 핵심적인 부분을 주로 다루며 복잡한 부분은 친절하게 그림과 함께 설명하고 있기 때문에 알고리즘을 처음 접하는 사람뿐 아니라 개발을 어느정도 해왔던 사람에게도 유용한 책입니다.


       



      구성


       



      Chapter 1: 문제 해결



      Chapter 2: 알고리즘 분석



      Chapter 3: 해싱



      Chapter 4: 힙



      Chapter 5: 정렬



      Chapter 6: 이진 트리



      Chapter 7: 그래프



      Chapter 8: 정리


       



      개인적인 생각으로 학습은 알고리즘을 처음 접하시거나 프로그램 코딩자체를 처음 접하시는 분들은 1장부터 시작하시면 좋을 것 같고 알고리즘에 대해 기본적인 지식이 있으시거나 프로그램 코딩을 할 줄 아시는 분들부터는 2장부터 학습하시는 것이 좋을것 같습니다.


       



      개인적으로 약간의 단점이 어쩌면 욕심일수도 있는게 좀더 많은 실습 예제 및 비즈니스 케이스가 담겨있으면 더 좋았지 않았을까라는 아쉬움이 있습니다.


       



      저의 리뷰를 읽어주셔서 감사합니다. 다음에는 좀더 유용하고 좋은 책을 소개하면서 더 나은 리뷰를 통해 여러분께 책을 소개시켜드릴 수 있도록 더 노력하겠습니다.















      "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

    •  


      KakaoTalk_Photo_2022-06-26-23-49-13.jpeg

      한빛미디어에서 출간된 "똑똑한 코드 작성을 위한 실전 알고리즘" 책은 해결하고자 하는 문제를 다양한 시각으로 풀어내는 능력을 키워내고, 효율적으로 소프트웨어를 개발할 수 있도록 하는 알고리즘을 꼼꼼히 기초부터 설명하여 실전에 잘 적용할 수 있도록 설명해냈다. 그렇기 때문에 프로그래밍을 어느정도 아는 사람을 독자로 삼았고, 파이썬 기반으로 알고리즘 개념들과 실전 문제들을 설명한다.

       


      알고리즘은 예측 가능한 시간에 정확한 결과를 반환하는 컴퓨터 프로그램으로 구현된 단계별 문제 해결 방법이라고 한다. 알고리즘 연구는 정확성(해당 알고리즘이 모든 입력에 대해 동작하는가?)과 성능(해당 알고리즘이 주어진 문제를 해결하는 데 가장 효율적인 방법인가?)를 고려해야한다고 한다. 책에서는 총 8가지 챕터로 나눠 1장 부터 문제 해결, 알고리즘 분석, 해싱, 힙, 정렬, 이진 트리, 그래프 등을 다룬다. 

       



       

      먼저 1장에서는 문제를 해결하는 여러 알고리즘들을 설명하고, 각 문제를 어떻게 해결해야하는지에 대한 방향성을 제시한다. 또한 문제 인스턴스 크기에 따라 실행 시간을 분석함으로써 성능 비교를 수행하고, 알고리즘에서 중요한 개념인 "시간 복잡도"와 "공간 복잡도"에 대해서 설명한다. 시간 복잡도는 크기가 N인 문제 인스턴스에서 알고리즘에 의해 실행된 주요 연산의 수를 계산하여 측정하는 것이고, 공간 복잡도는 문제 인스턴스의 크기 N에 기반해 알고리즘에 필요한 추가 메모리 공간을 나타내는 것이다. 여러 알고리즘 사이트에서 이 공간 복잡도와 시간 복잡도를 계산하는 것은 자주 등장하며, 알고리즘의 효율성을 판단하는 명확한 근거이기도 하다.

       

      2장에서는 알고리즘에서 매우 중요한 개념인 시간 복잡도, 공간 복잡도를 나타내는 빅오 표기법에 대해 설명하고, 각 복잡도에 따라 어떻게 값이 증가되는지 자세히 설명한다. 3장에서는 해싱에 대해 다루며, 연결 리스트 자료구조, 배장 주소법, 해시 함수 등에 대해 예제를 통해 자세히 설명한다. 4장에서는 힙에 대해 다루는데, 큐와 우선순위 큐 데이터 타입 부터 시작해서 이진 힙에서 우선 순위가 가장 높은 값을 각 시간 복잡도 별로 제거하는 방법에 대해 설명한다. 5장에서는 가장 흔히 나오는 개념인 배열을 통해 정렬하는 방법에 대해 설명한다. 6장에서는 배열에 대한 내용을 배웠으니 재귀 자료 구조인 이진 트리를 연결 리스트와 함께 설명한다. 7장에서는 그래프에 대해 다루며, 알고리즘 문제를 풀 때 꼭 알아두어야 하는 깊이 우선 탐색, 너비 우선 탐색 개념을 배우게 된다. 8장에서는 지금까지 배웠던 내용에 대한 키워드들을 정리해두었다. 또한 파이썬 데이터 타입(백, 스택, 큐, 심볼 테이블, 우선순위 큐, 인덱스 최소 우선순위 큐)의 성능에 대해 자세히 설명해놓았으며, 파이썬 내장 데이터 타입들을 구현하는 방법에 대해 간략히 설명해두었다. 

       

      이 책은 책 제목 처럼 지금 보다 더 똑똑한 코드를 작성하고 싶을 때 보면 큰 도움이 되는 책이며, 알고리즘 문제를 풀기 위해 참고해야할 필독서 중 하나라고 생각된다. 또한 깃허브에 예제 코드들을 수록해놓았으며, 각 장마다 등장하는 개념들을 확실하게 습득할 수 있도록 알맞은 예제 코드들을 포함하고 있으며, 각 문제에 대해 어떻게 접근하고, 어떤 개념을 이용하여 풀어내야하는지 자세히 설명해두었기에 강의를 듣지 않고 책만 보아도 이해될 수 있게 내용을 담았다는 느낌을 받았다. 코드의 효율을 향상하는 것은 더 효율적인 프로그램을 만드는데 많은 도움이 되기 때문에 코드 효율성에 대해 고민하는 사람이라면 이 책을 한번쯤 읽어보는 것을 추천한다. 

       

      “한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”



    • Learning Algorithm


       


      아마 유명한 IT 업계로 취업하려는 사람들은 알겠지만 시중에는 정말 다양한 알고리즘 책들이 존재한다. 다양한 책들마다


      나름대로의 내용을 풀어가는 방향이 다 다르다. 예를 들어서 어떤 책은 문제은행 식으로 많은 케이스들을 제공하고 이에 대한 해설을


      제공하는 형태가 있다. 또 다른 책은 정렬이나 탐색, 그래프와 같이 문제를 푸는데 있어서 필요한 기본 지식들에 대해서 하나씩 다루는


      형태로 되어있는 경우도 있다. 또 이 선택의 기준이 언어에 따라서 달라지는 경우도 있다. C++도 있고, 자바용도 있고,


      파이썬도 있고... 아마 취향이나 취업할 회사의 성향에 따라서 알고리즘 책 선택의 기준이 달라질 것이다.


      사실 이번에 소개할 책을 처음 선택한 이유는 어떻게 보면 앞에서 말한 책을 선택하는 기준 중


      교집합에 해당하는 책이라고 생각했기 때문이다. 분량이 많지 않으면서, 문제에 필요한 기본 지식을 설명한 책을 원하고,


      이를 파이썬으로 설명되어 있는 책을 찾는 사람, 특히 나같은 경우는 언젠가는 봐야하는 SW역량인증시험 준비를 위해서


      간단하게 살펴볼만한 책이라고 봤다. 참고로 책에서 다뤄지는 내용은 다음과 같다.


      • 파이썬 기본자료형을 활용한 문제 해결

      • 복잡도를 통한 알고리즘 분석

      • 해싱


      • 정렬

      • 이진트리

      • 그래프


      그런데 책을 읽으면서 느낀 점은... 처음 알고리즘을 배우려는 사람이 보기보다는 한번씩 기본내용을 훑고 다시 복습하려는


      사람이 보면 좋을것 같다는 생각이 들었다. 물론 책의 내용이 구현하는 부분이나 일반적인 알고리즘 책에서 소개할법한


      내용들도 다루기는 하지만, 그보다도 "이런식의 접근 방법을 했을 때는 결과가 어떻게 바뀔까?", "해당 알고리즘에서는


      어떤 오류가 있는데, 왜 날까?" 하는 식의 설명들이 많이 포함되어 있다. 물론 기본 내용만 살피려는 사람에게는 어려운


      내용일 수도 있겠지만, 뭔가 알고있는 지식에 대한 생각의 여지를 부여한다고 할까.. 그런 느낌이 많이 들었다.




      출처: https://talkingaboutme.tistory.com/entry/Book-Learning-algorithm [자신에 대한 고찰:티스토리]


    • Learning Algorithms



      조지 하이네만 지음



      윤대석 옮김


       



      "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


       



      2022년 6월



      2022 나는 리뷰어다 활동의 다섯 번째 리뷰


       



      6월에 리뷰할 책은 "Learning Algorithms"이다.


      가볍게 300페이지 좀 안 되는 책은 알고리즘을 공부하고자 하는 이에게 좋은 책이라 생각되며,


      파이썬을 조금 공부해보셨던 분이라면 더 좋은 책일 것이다.


       


      저자는 소프트웨어 엔지니어링 및 알고리즘 분야에서 20여 년간 경험을 쌓은 컴퓨터공학과 교수다. 내용이 조금 딱딱하진 않을까 했지만 옮긴이 윤대석 님이 잘 옮겨주신 것 같다. 현직 엔지니어로서 알고리즘과 운영체제를 꾸준히 공부하시는 분이시고, [쓰면서 익히는 알고리즘과 자료구조]의 저자이다. 


       


      알고리즘의 중요성이란 몇 번을 말해도 지나치지 않다.


      컴퓨터 과학의 핵심이자 정보화 시대의 필수 요소로서, 수많은 분야의 인터넷 요청에 사용되고 있다.


      컴퓨터 과학 내에서 알고리즘을 발견하고 적용할 수 있는 공부를 하는 것은 쉽지 않다.


      대부분 수학적 증명과 컴퓨터 과학 개념을 강조하기에 효율적인 공부가 어렵다.


       


      하지만 이 책은 코드에 당장 적용해 효율을 향상해주는 다양한 알고리즘을 소개하며 파이썬으로 작성된 예제 코드를 제공한다.


      현재 파이썬은 다양한 분야에서 사용되며, 가장 인기 있고 사용자 친화적은 프로그래밍 언어 중 하나이다.


      책에서는 알고리즘을 최대한 시각화하고 상세한 설명으로 독자의 개념 이해를 돕는다.


       


      컴퓨터 과학에서 사용되는 자료구조와 기본 알고리즘을 알려주기에 효율적인 프로그래밍 작성이 되도록 도와줄 책이며, 코딩 인터뷰를 준비하는 개발자와 지망생에게도 좋은 가이드가 될 것이라 조지아 공과대학교의 즈비 갈릴리 명예 컴퓨팅 학장은 추천을 해주었다.


       


      사실 실무에 종사중인 개발자에게 알고리즘의 학습은 꼭 필요한 공부가 아니라고 생각할 수도 있다.


      하지만 알고리즘을 학습하게 되면 해결하고자 하는 문제를 다양한 시각으로 풀어내는 능력을 키울 수 있고, 좀 더 효율적인 소프트웨어를 개발할 수 있다는 장점이 있다. 이 책은 알고리즘이 어떻게 구성되는지 단계별로 꼼꼼히 설명해 기초를 실전에 잘 적용하도록 이끌어준다.


      알고리즘 분야는 방대하기 때문에 이 책을 시작으로 접하면 아주 좋을 것이다.


       


      책에서 다루는 내용에 대해서 살펴보자.




      기본 타입을 사용해 정보를 구성하는 방법부터 시작하여, 자료구조에서 직접 작동하는 알고리즘, 스택이나 우선순위 큐와 같은 기본 추상 데이터 타입에 의존하는 복잡한 알고리즘까지 다양한 알고리즘이 어떻게 성능을 달성하는지 이해를 돕도록 하고 있다.


       


      책의 본문 일부를 보자.




      그림을 통해 독자의 이해를 돕고, 표를 통해 확실하게 비교를 할 수 있도록 도와주고 있다.


      직접 코드를 치면서 이해를 하고, 각 챕터마다 마지막엔 연습 문제를 통해 문제 해결 능력을 키워주고 있다.


       


      시중에 많은 알고리즘과 자료구조 관련한 책이 많지만, 이 책은 알고리즘 공부를 시작하는 사람에게 아주 적합한 책이 될 것이다.


      비교적 친근한 파이썬이라는 언어를 사용하는 것도 큰 장점이 될 것 같다.


       


      알고리즘 공부, 이젠 진짜로 시작해 봅시다.


       



      Love Yourself.



    • 이 책은 컴퓨터 과학 전공생 대상이 아니라, 쉽게 쓰여서 다양한 배경의 독자들을 대상으로 한다. 단, 파이썬 언어는 알고 있는 상태인 것이 좋다.



      알고리즘 하나 하나를 차근차근 그림과 함께 설명해준다. 알고리즘의 기본 원리부터 배우길 원하는 나에게 딱 맞는 책이었다.



      다만, 당장 문제 풀이가 목적인 사람들에게는 맞지 않을 것 같다. 제목에 나와있듯 똑똑한 코드 작성을 위한 것이라는 설명이 딱 맞다.



      알고리즘을 설명하고 나서, 코드 몇 줄을 작성해야하는가? 저장공간은 추가로 얼마나 드는가? 하고 해당 알고리즘을 선호하는 요인을 따지고 있다. 



      이 책에서 기본 원리를 확실히 잡고나면 다른 응용이 두렵지 않을 것 같다. 완독 후 효율적인 문제 풀이용으로 다른 책을 보거나 실전 문제를 연습하면 좋을 것 같다.


       



      "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


       

    • 전공을 시작 할 때만해도 파이썬은 알고리즘 공부나 대회 준비에 적합하지 않다는 인식이 강했습니다. 제가 가지고 있는 다른 알고리즘 서적들만 해도 C와 cpp가 각 2권씩입니다. 자료구조나 파이썬의 신텍스 슈가 등 때문에 파이썬 자료구조와 알고리즘 책을 시장에서 거의 찾아볼 수 없었습니다.


      책이 한 장 한 장 넘어가면서 파이썬이 알고리즘 공부에 별로라는 생각은 편견이라는 걸 다시 느꼈다. 알고리즘에서 중요한 점은 문제 풀이를 위한 논리적인 사고 과정과 사고 과정을 코드로 옮기는 과정이지 구현하는 언어의 문제가 아니었다. 알고리즘의 특성에 따라 특정 언어가 더 좋은 퍼포먼스를 보여 줄 수는 있어도 구현 할 수 없는 언어는 없습니다.


      이 책의 제일 큰 장점은 파이썬으로 코드가 작성되었다는 것 입니다. 파이썬도 깊게 들어가면 상당히 어려운 언어이지만 인터프리터에 사용자 친화적인 언어여서 C나 CPP로 작성된 코드보다는 상대적으로 읽기 편합니다. 최근들어 언매니지드 언어로 입문하고 특히 JS나 파이썬 입문자가 많아 쉽게 접근하기 좋습니다.


      또 파이썬을 파이쏘닉하게 이용해 알고리즘 구현을 하고 있어 알고리즘과 파이쏘닉한 프로그래밍을 배울 수 있는 책입니다. 모든 실습을 동반한 책이 그렇지만 단순히 보고 따라치는 학습이 아닌 고민하며 이해하는 실습을 겸하면 알고리즘과 파이쏘닉 두 마리 토끼를 잡을 수 있는 책입니다.





      한빛미디어 2022 도서 서평단 "나는 리뷰어다"의 일원으로 도서를 제공받아 작성한 리뷰입니다.


    • 직업 특성상 많은 양의 데이터를 사용하게 되는데, 이러한 과정에서 알고리즘을 잘못 선택해 코딩하게 된다면, 몇 분 내로 끝날 작업이 몇시간이 걸리는 일이 생길 수도 있다.



       



      최근에는 코딩을 하며 어떻게 코드를 효율화 시킬수 있을까?’를 많이 고민했다. 그것이 바로 뛰어난 개발자의 스킬이기 때문이다. 하지만 이런 것들을 어디서 쉽게 배울 수 있는지를 몰랐고, 이번에 이 책을 읽으면서 그 답을 알게 됐다.



       



      알고리즘이란, 예측 가능한 시간에 정확한 결과를 반환하는, 컴퓨터 프로그램으로 구현된 단계별 문제 해결 방법이다. , 어떻게 문제 해결 프로세스를 세울지를 고민하는 과정이다. 나는 지금까지 생각나는 아무 코드나 입력하면서 실행이 잘 되면 넘어가는, 그런 막연한 방법을 사용하였다.



       



      단순한 함수의 MAX()에 대해서도, 오름차순인지 내림차순인지 등에서도 차이가 생기는 것이 신기했다.



       



      특히 이를 체계적으로 공간 복잡도(필요한 메모리의 양), 시간 복잡도(연산을 얼마나 많이 했는지)를 사용해 풀이한 것이 인상깊었다.



       



      이를 통해 항상 그때그때 배열 크기를 추가하거나, 한번에 계산될 연산을 나눠하는 등의 코딩 방식으로 쓸데없는 시간이 많이 들어간 것이 문제라는 걸 알게 되었다.



       



      이 외에도 정렬 방식에 있어서 분할 유무, 시작 지점 등에 따라 연산 능력이 천차만별로 달라지는 것을 깨닫고, 올바른 알고리즘 선정의 필요성을 알게 되었다.



       



      어느 정도 코딩을 할 줄 아는 실력이 된다면 흥미롭게 읽을 수 있는 책이라고 생각한다. 특히, 조금이라도 코드의 성능을 끌어올리려면 특히 권장한다.



       



      "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

    • 최근 IT업계의 코딩 테스트 기반의 채용 프로세스 덕분에 코딩 테스트를 위한 문제 해결과 알고리즘 풀이 관련 서적에 최근 많은 분들이 관심을 갖고 있고, 그 수요 덕분에 많은 관련 서적들이 나와 있습니다. 전산 전공자라면 학부시절 접했을 만한 전형적인 알고리즘과 자료 구조 수업용 대학 교재부터, 채용 면접을 앞둔 분들이 관심을 가질 만한 채용을 위한 코딩 테스트를 전문적으로 다루는 알고리즘 서적까지 다양한 종류의 서적들이 서점에 나와 있어 필요와 취향에 맞춰 골라 볼 수 있는 혜택을 보고 있는 듯 합니다.


       


      이 책은 최근 나온 트랜디한 알고리즘 서적 보다는 대학 교재에 가까운 구성과 내용으로 이루어져 있습니다. 저자가 대학교수인 것으로 봐서 자신의 수업에 사용하기 위해 만든 느낌의 책인데, 알고리즘 대학교재로서 정석적이고 교과서적인 순서와 전개로 진행되지만, 트랜디한 파이썬을 구현 언어로 사용하고 있고 전형적인 딱딱한 대학교재처럼 나열식 전개가 아닌, 마치 정말 저자의 수업을 듣는 것처럼 무엇을, 왜, 어떻게를 계속 반복하며 의문과 필요를 던져가며 내용이 심화되는 대화식 전개로 구성되어 있습니다. 개인적으로 최근 읽은 알고리즘 및 코딩 테스트 서적들이 뭐랄까 문제 풀이 자체에만 집중한 느낌이 있어 아쉬운 점이 있었는데 최근 트랜드와는 다르게 이 책은 대학교재가 늘 그래왔듯 문제 풀이는 연습문제로 독자에게 떠 넘기고(...) 근본적 개념과 학문적 설명에 집중하고 있어 인상적이었습니다. 분명 상대적으로 읽기 어려운 부분이 적잖이 있습니다만 최근 알고리즘 서적 중에는 특출난 강점이라 생각되었습니다.


       


      알고리즘 서적으로서 정석적인 내용을 담고 있고 번역도 잘 되어 있습니다.  실제로 알고리즘 입문서라고 되어 있긴 합니다만, 비전공자 혹은 관련 지식이 없는 분이라면 조금 읽기 불편할 수 있는 책이라고 개인적으로 생각되어, 완전 초보자 보다는 깊이 있는 내용을 다루는 알고리즘 입문서를 원하는 분들에게 추천드리고 싶습니다.


       


      한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.


       


       


    • 요즘은 코드를 상위 레벨에서 손쉽게 짤 수 있으면서도 성능도 그렇게 밀리지 않는 Go나 C#같은 좋은 언어들이 많다. 이런 언어들에는 우리가 많이 사용하는 자료구조, 알고리즘 등이 이미 최적화된 상태로 구현되어 내장되있기 때문에 실무에서 실제로 알고리즘을 직접 구현하게 되는 경우는 그렇게 많지 않다. 나같은 경우에도 신입사원으로 처음 입사하기 전 서류통과를 위해 코딩테스트를 준비했을 때와 학부 수업을 들었을 때를 제외하곤 알고리즘을 깊게 파본 경험은 전무한 것 같다. 학부수업에서 들었던 알고리즘 수업에 대한 기억을 더듬어 가보면 무수한 수학적 증명과 컴퓨터과학 개념이 혼재되어 매우 따분하고 지루했던 경험이 있다.






      이 책의 경우 자주 사용되는 주요 알고리즘인 해싱, 힙, 정렬, 이진트리, 그래프와 관련된 다양한 주제를 다루고 이를 쉬운 스크립트 언어인 파이썬을 통해 실제로 구현해보면서 익힐 수 있게 도와준다. 학술적으로 엄밀한 알고리즘 정의들을 배우기보다는 실제 현업에서 어떤 알고리즘들이 존재하고 이를 어떤 상황에 쓰면 좋을지 알려주는 cookbook 느낌의 핵심요약서라고 생각된다. 만약 현업에 종사하면서 핵심 알고리즘에 대해 한번 리마인드가 필요한 경우나 이직을 위해 알고리즘 공부가 필요한 경우 해당 도서가 도움을 줄 수 있을거라 생각한다.


    • [똑똑한 코드 작성을 위한 실전 알고리즘] 한빛미디어 서적


      알고리즘을 공부하는 학생 입장에서 어렵게 느껴질 수 있는 부분은 이론과 실전의 연결고리라고 생각한다. 이진 배열 탐색, 해시 함수, 스택과 같은 알고리즘을 이론적으로 이해해도 이것을 코드화 시키는 것은 또 다른 문제이다. 반대로 코드를 잘 짜는 학생도 이론을 이해 못한다면 알고리즘을 구현할 수 없다. 실제로 내가 사용했던 알고리즘 교과서는 이론 서적과 실전 서적이 별개였고, 당시 C언어(…)를 갓 입문한 나로써는 이론도 가뜩이나 어려운데 이걸 구현하라고 매주 자동 채점되는 코딩 과제 잔뜩 내시는 교수님이 너무 버거웠던 기억이 난다.


      이 책에서 두드러지는 특징이 이 부분을 도와준다는 것이다. 이론을 컴퓨터 언어로 옮기는 과정의 중간다리를 만들어준다. 구체적으로는 이론 -> 이론 시각화 -> 코드 구현 방법까지의 프로세스를 순서대로 소개해준다. 이 책에서 코드 구현은 Python을 사용하였다. 사진으로 책 주요 구성을 살펴보며 포스트를 짧게 마무리하겠다.


      힙 알고리즘 이론 내용


      힙 알고리즘 예제 그림 설명


      힙 알고리즘 Python 구현 방법 설명


      알고리즘 복잡도 설명


      위 사진들처럼 알고리즘을 예시와 함께 구체적으로 코드화 시키기까지의 내용을 꼼꼼하게 담고 있다.


      이 책은 기본적으로 학부에서 다루는 알고리즘 범위를 다룬다. 그러나 기본적인 알고리즘 원리 및 코드 실현 외 심화적인 내용은 포함하지 않는다. 알고리즘 기본 단계에서 이론으로 코드화 시키는데 어려움을 겪는 학생들이 차근차근 공부하면 자신감이 생기는 데 도움될 것 같다.


       



      한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.


    •  


       


      자료구조, 알고리즘 기초를 알고 계신 분들이 다시 개념을 살펴볼 때 좋은 책이라고 생각됩니다.


      책의 두께에 비해 상당히 많은 주제들이 정리되어 있으며, 수도 코드와 그림을 사용해 순차적으로 알고리즘이 실행되는 과정을 논리적으로 설명하는 스타일입니다.


       


      책의 내용을 바탕으로 개념을 이해하고 스스로 구현해 본다면 많은 도움이 될 거라고 생각됩니다.


      (스스로 구현해 본 후 꼭 저자의 깃헙에 있는 잘 작성된 코드와 비교해 보세요)


      특히 자료구조와 알고리즘은 워낙 내용이 방대해, 책의 두께나 복잡한 구성에 질려서 중간에 포기하는 경우가 많았는데 이 책은 간결하게 주요 내용만 정리가 되어 있어 좋았습니다.


       


      자료구조, 알고리즘을 다시 공부해 보려고 하는 모든 개발자 분들에게 추천드립니다.


       


       



      "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

    • 살짝 난이도가 있어 파이썬으로 알고리즘을 처음 접하는 분보다는, 한 번 이상 알고리즘 공부를 해본 분께 알맞을 듯한 책입니다.

      개인적으로는 자료구조와 알고리즘 공부를 한 적이 있지만 책의 내용이 쉬운 난이도로 느껴지지는 않았습니다.

      내용적인 면에서는
      - 알고리즘의 성능
      - 이진 배열
      - 해싱
      - 힙
      - 정렬
      - 이진 트리
      - 그래프
      - 스택, 큐
      - 이후에 학습하면 좋을 내용

      까지 다뤄주어 기본에 충실하면서도,심화적인 내용이 코드와 도해로 잘 나타나 있다고 생각합니다.

      알고리즘적인 측면에서 파이썬 코드를 성능 효율적이게, 똑똑하게 작성하고 싶은 분께 이 책을 추천합니다.



      한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.





    • 똑똑한 코드 작성을 위한 실전 알고리즘
      조지 하이네만 지음 | 윤대석 옮김 | 한빛미디어
      (http://www.yes24.com/Product/Goods/109554881)


      알고리즘 서적을 리뷰하는 건 오랜만인 것 같습니다. 대학생, 대학원생 신분을 벗어나 IT 개발자, 직장인으로 살아온 이후로 알고리즘 서적을 읽을 기회는 많지 않았습니다. 현재 담당하고 있는 개발 업무와 관련된 도메인 서적을 읽는 시간이 월등히 많았으니까요, 많은 개발자분들이 그럴거라 생각합니다. (직접적으로 꾸준히 알고리즘 최적화 등의 개발을 하지 않는 한 말입니다.)


      이 책의 목차는 다른 알고리즘 도서와 유사합니다. 알고리즘의 문제해결 전략, 복잡도, 성능에 관한 글과 주 자료구조, 알고리즘에 대한 설명입니다. 목차 내용은 크게 아래와 같습니다.



      목차





      CHAPTER 1 문제 해결

      1.1 알고리즘이란
      1.2 리스트에서 가장 큰 값 찾기
      1.3 주요 연산 횟수 계산하기
      1.4 모델로 알고리즘 성능 예측하기
      1.5 리스트에서 가장 큰 두 수 찾기
      1.6 토너먼트 알고리즘
      1.7 시간 복잡도와 공간 복잡도
      1.8 요약
      1.9 연습 문제

      CHAPTER 2 알고리즘 분석

      2.1 경험적 모델로 성능 예측하기
      2.2 곱셈 성능 예측하기
      2.3 성능 클래스
      2.4 점근적 분석
      2.5 모든 수행 계산하기
      2.6 모든 바이트 계산하기
      2.7 이진 배열 탐색
      2.8 이진 배열 탐색으로 리스트에서 값 찾기
      2.9 이진 배열 탐색의 또 다른 기능
      2.10 알고리즘 성능 비교
      2.11 곡선 피팅 vs. 상/하한
      2.12 요약
      2.13 연습 문제

      CHAPTER 3 해싱

      3.1 키와 연관된 값
      3.2 해시 함수와 해시 코드
      3.3 (키, 값) 쌍에 대한 해시 테이블 구조
      3.4 선형 조사로 충돌 검출 및 해결하기
      3.5 연결 리스트를 사용한 분리 연쇄법
      3.6 연결 리스트에서 엔트리 삭제하기
      3.7 개방 주소법과 분리 연쇄법 평가하기
      3.8 동적 해시 테이블
      3.9 동적 해시 테이블 성능 분석하기
      3.10 완벽한 해싱
      3.11 (키, 값) 쌍 순회하기
      3.12 요약
      3.13 연습 문제

      CHAPTER 4 힙

      4.1 최대 이진 힙
      4.2 (값, 우선순위) 삽입하기
      4.3 우선순위가 가장 높은 값 제거하기
      4.4 배열로 이진 힙 구성하기
      4.5 엔트리 이동의 구현
      4.6 요약
      4.7 연습 문제

      CHAPTER 5 정렬

      5.1 교환을 통한 정렬
      5.2 선택 정렬
      5.3 성능이 O(N2)인 정렬 알고리즘의 구조
      5.4 삽입 정렬과 선택 정렬의 성능
      5.5 재귀와 분할 정복
      5.6 병합 정렬
      5.7 퀵 정렬
      5.8 힙 정렬
      5.9 O(NlogN) 알고리즘의 성능 비교하기
      5.10 팀 정렬
      5.11 요약
      5.12 연습 문제

      CHAPTER 6 이진 트리

      6.1 시작하기
      6.2 이진 탐색 트리
      6.3 이진 탐색 트리에서 값 탐색하기
      6.4 이진 탐색 트리에서 값 제거하기
      6.5 이진 탐색 트리 순회하기
      6.6 이진 탐색 트리 성능 분석하기
      6.7 자가 균형 이진 트리
      6.8 자가 균형 이진 트리 성능 분석하기
      6.9 이진 탐색 트리를 (키, 값) 심볼 테이블로 사용하기
      6.10 이진 탐색 트리를 우선순위 큐로 사용하기
      6.11 요약
      6.12 연습 문제

      CHAPTER 7 그래프

      7.1 그래프로 문제 모델링하기
      7.2 깊이 우선 탐색으로 미로 풀기
      7.3 너비 우선 탐색으로 미로 풀기
      7.4 유향 그래프
      7.5 가중치 그래프
      7.6 다익스트라 알고리즘
      7.7 모든 쌍의 최단 경로 문제
      7.8 플로이드-워셜 알고리즘
      7.9 요약
      7.10 연습 문제

      CHAPTER 8 정리

      8.1 파이썬 내장 데이터 타입
      8.2 스택 구현하기
      8.3 큐 구현하기
      8.4 힙과 우선순위 큐 구현
      8.5 이후 학습


      필수로 읽었으면 하는 목차 Chapter 1/2


      알고리즘을 학습할 때 많은 분들이 가장 앞 쪽에 있는 서론을 생략하는 경우가 있는 것 같습니다. 간혹 신입개발자 분들과 대화 시 나타나는 상황이 있습니다. 시간복잡도와 공간복잡도에 대해 대화를 하는 경우 복잡도에 대한 건 들어봤지만 정확히 각 알고리즘 별로 어떻게 계산해야하는지 왜 그런 복잡도가 나오는지 잘 모른다는 것입니다. 특히 본인이 작성한 알고리즘에 대해서 복잡도 계산을 하지 못하는 경우가 있었습니다.


      어떤 알고리즘은 NLogN 이고, 어떤 알고리즘은 N이다. 라는건 암기를 하고 있지만 왜 그런지에 대한 이해는 부족한 경우가 많았습니다. 자료구조, 알고리즘에 대해 많이 아는 것도 좋지만 현업에서 본인이 작성하는 코드의 시간,공간복잡도에 대해 계산하고 이해하는 능력도 매우 중요하다고 생각됩니다.



      그러한 이유로 이 책의 Chapter 1,2 는 꼭 읽으셨으면 좋겠습니다. 특히 그림과 예제로 쉽게 설명이 되어 있으므로 부담갖지 말고 읽으면 좋을 것 같습니다.


      그림 예시를 통한 상세한 내용 전달


      해시, 힙, 정렬 등 여러 알고리즘을 데이터, 코드 기반으로 이해하기는 초보자에게 어려운 일일 수 있습니다. 이 책을 추천하고 싶은 가장 큰 이유는 그림을 통한 데이터, 알고리즘의 흐름을 쉽게 파악할 수 있다는 것입니다.




      위 처럼 스택의 내용을 가시화하여 보여주는 그림입니다. 스택 뿐만 아니라 트리, 정렬 등 다양한 알고리즘의 동작원리를 쉽게 이해할 수 있도록 저자는 많은 내용을 가시화 하여 전달하고 있습니다. 또한 알고리즘의 대한 성능을 표로 객관화하여 보여줍니다. 표로 전달하는 방식은 다른 책에서도 발견할 수 있으나, 파이썬 모듈을 이용한 알고리즘 동작방식에 대해서도 표로 제공해 주고 있다는 점은 파이썬을 이용하여 개발하는 분들에게는 조금 더 도움이 되지 않을까 합니다. (저 같은 경우에는, C++로 코드를 재작성하여 공부하였습니다.)


      이 도서를 입문자 분들에게 추천! 연습문제는 꼭 풀자!


      입문자분들이 알고리즘,자료구조 도서를 검색 시 많은 서적이 나옵니다. 내용과 그림, 번역까지 모두 깔끔하여 쉽게 읽을 수 있고 Github에서 코드도 제공하기에 테스트 및 공부하기에도 효율적입니다.


      특히 제공되는 연습문제는 쉽게 넘어가는 것 보다는 조금 생각해보고 성장할 수 있는 작은 도움이 될 수 있는 문제들입니다. 꼭 생략하지 말고 풀어보면 더욱 좋을 것 같습니다.


       



      "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


    • 최근 몇년간 대형 IT 회사에서 면접채용의 과정으로 자료구조, 알고리즘 코딩테스트를 보기 시작했다.



      IT 개발자로 이직을 하기 위해 코딩테스트에서 문제를 풀어보지도 못한 경우가 많아 알고리즘에 대해 더 기피하여 면접제의가 와도 코딩테스트 여부를 묻고는 있을 경우에 포기를 하는 경우도 많았다. 그만큼 알고리즘은 나에게 있어 다가가기 어려운 존재였다. 내용이 이미 잘 구현된 채로 재공되는 라이브러리나 프레임워크가 있기에 굳이 디테일하게 공부할 필요가 있을까 라는 생각도 한몫 한것 같다. 기피대상 1호이다. 코딩테스트.....



      하지만 마냥 피할수 만은 없기에 어쩔수 없는 상황에 있어 불가피하게 이직을 해야 하는 경우도 생겨 이를 극복해야 한다.



      학습도구는 너무나 많다. 알고리즘 관련도서, 온라인 학습 플랫폼, 블로그 등이 있지만 잘 고르지 못하면 나같은 경우 너무 어려워 포기하거나 또한 너무 쉬어 흥미를 잃기 십상이였다.



      알고리즘이야 말로 자신의 수준에 맞게 자료를 수집하고 차근차근 다음 단계로 넘어가면서 오랜 시간 끈기 있기 학습해야 할 것이다.






      이 책은 알고리즘이 어떻게 구성되는지 단계별로 꼼꼼히 설명해 기초를 실전에 잘 적용하도록 이끌어준다. 가장 많이 활용되는 핵심적인 부분을 주로 다루며 복잡한 부분은 친절하게 그림과 함께 설명한다. 알고리즘 분야는 방대하고 학습할 내용이 많지만 이 책을 시작으로 범위를 넓혀가는것이 좋지 않을까 싶다.






      CHAPTER 1 문제 해결






      1.1 알고리즘이란



      1.2 리스트에서 가장 큰 값 찾기



      1.3 주요 연산 횟수 계산하기



      1.4 모델로 알고리즘 성능 예측하기



      1.5 리스트에서 가장 큰 두 수 찾기



      1.6 토너먼트 알고리즘



      1.7 시간 복잡도와 공간 복잡도



      1.8 요약



      1.9 연습 문제






      CHAPTER 2 알고리즘 분석






      2.1 경험적 모델로 성능 예측하기



      2.2 곱셈 성능 예측하기



      2.3 성능 클래스



      2.4 점근적 분석



      2.5 모든 수행 계산하기



      2.6 모든 바이트 계산하기



      2.7 이진 배열 탐색



      2.8 이진 배열 탐색으로 리스트에서 값 찾기



      2.9 이진 배열 탐색의 또 다른 기능



      2.10 알고리즘 성능 비교



      2.11 곡선 피팅 vs. 상/하한



      2.12 요약



      2.13 연습 문제






      CHAPTER 3 해싱






      3.1 키와 연관된 값



      3.2 해시 함수와 해시 코드



      3.3 (키, 값) 쌍에 대한 해시 테이블 구조



      3.4 선형 조사로 충돌 검출 및 해결하기



      3.5 연결 리스트를 사용한 분리 연쇄법



      3.6 연결 리스트에서 엔트리 삭제하기



      3.7 개방 주소법과 분리 연쇄법 평가하기



      3.8 동적 해시 테이블



      3.9 동적 해시 테이블 성능 분석하기



      3.10 완벽한 해싱



      3.11 (키, 값) 쌍 순회하기



      3.12 요약



      3.13 연습 문제






      CHAPTER 4 힙






      4.1 최대 이진 힙



      4.2 (값, 우선순위) 삽입하기



      4.3 우선순위가 가장 높은 값 제거하기



      4.4 배열로 이진 힙 구성하기



      4.5 엔트리 이동의 구현



      4.6 요약



      4.7 연습 문제






      CHAPTER 5 정렬


    • 알고보니 저자가 컴공과 교수님이셨네요. 어쩐지..


      전체적인 알고리즘들은 학부때 배우는 알고리즘들이지만, 기본적으로 알고있어야 하는 필수 알고리즘들이라서


      전공자라면 기본기를 다시 탄탄히 할 수 있고, 비전공자들에게는 특히 꼭 추천드리고 싶습니다.




    • 이미 수많은 자료구조 & 알고리즘 책들이 있는데, 이 책의 가치는 무엇일까? 초보자를 위해, 정말 자주 사용될 부분만 집중적으로, 하지만 다른 초보자들 책에 비해 더 깊게 파고들었다는 점이 특징이라고 생각한다.


      대상 독자가 초보자라는 점은 여러가지로 드러나지만, 단적으로 이 페이지만 봐도 알 수 있다. 알고리즘 책에 빠질 수 없는 시간복잡도를 설명하면서 O(NlogN)의 읽는 법을 알려줄 정도로 저자는 입문자를 대상으로 책을 썼다는 점을 알 수 있다.




      책은 알고리즘이 뭔지, 복잡도가 뭔지 설명하고, hash, heap, sort, binary tree, graph라는 정말 자주 사용되는, 또한 기본적인 자료구조 & 알고리즘을 한 챕터씩 설명한다. 목차를 보고 든 첫 인상은, 혹시 저자가 interview를 준비하는 사람들을 위해 이런 구성을 선택했나? 하는 생각을 할 정도로, 기초적인 (동시에 매우 중요한) 부분에 집중했다는 생각이다. 실제로 그동안 했던 coding interview를 생각해보면, 주제들이 O(N), hash, sort, binary tree, heap등이 자주 나오고 graph만 해도 보기 쉽지 않으며, 가끔 dyanmic programming을 경험했었다.


      앞서 이야기했지만, 다른 책과 좀 차별화되는 점은 하나 하나의 주제를 좀 더 깊게 파고든다는 점이다. 예를 들어 sort에서 tim sort를 다루거나 binary tree에서는 AVL tree를 설명하는 등 완전 초보용으로 보기에는 약간 난이도가 있는 부분까지 설명한다.


      책의 마지막에서도 이야기하지만 이런 초보자용 알고리즘 서적은 정말 다양하고 풍부한 알고리즘 세계의 시작에 불과하며, The Art of Computer Programming은 여전히 프로젝트가 진행중이다. 이 책은 이런 알고리즘 세계로 가는 좋은 시작점이다.


      한빛미디어 ‘나는 리뷰어다’ 활동을 위해서 책을 제공받아 작성된 서평입니다


    • 안녕하세요 마개입니다.


      이번에는 알고리즘 책에 대해 소개드리고자 합니다.


       



      한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.


       


       



      도서 소개


       



      x9791162245644.jpg



      ● 도서명 : 똑똑한 코드 작성을 위한 실전 알고리즘



      ● 지은이 : 조지 하이네만



      ● 옮긴이 : 윤대석



      ● 출판사 : 한빛미디어



      ● 출간 일자 : 2022-05-20



      ● 페이지 : 296쪽



      ● 가격 : 정가 19,800원


       



      취업/코딩 테스트를 준비하거나 CS 기초지식을 쌓기 위해 알고리즘 공부를 시작하거나 일을 점점 오래 하다 보면 알고리즘의 중요성에 대해 점차 알기 시작한다. 시스템을 처음 구축한다거나 처리해야 하는 데이터가 적었던 시절에 개발을 하면 느끼지 못할 수 있지만 점차 데이터가 늘어나고 실시간 처리를 많이 요구하는 요즘 같은 상황에서 구축되어 있는 시스템의 속도가 느리다면 원인을 찾게 되고 알고리즘이 중요하다는 걸 느끼게 된다.


       



      해당 책은 이러한 부분에 해결책을 제시해 줄 수 있는 책이다. 알고리즘은 매우 많은 종류가 있지만 그중에 중요한 것들을 토대로 이론에서 끝나지 않는다. 파이썬 코드를 예제로 해당 알고리즘이 흘러가는 방식, 그로 인해 나오는 속도까지 분석해서 독자들에게 알려준다.


       



      파이썬 코드를 예제로 진행하기 때문에 기본적으로 프로그래밍 언어에 대한 지식이 필요하다. 파이썬을 예제로 하기 때문에 파이썬을 알면 가장 좋지만 다른 프로그래밍 언어에 대한 지식이 있는 사람이라면 파이썬 코드를 이해하는데 어려운 수준은 아니다. 다만 비전공자이자 프로그래밍 언어를 아예 모르는 상태라면 이해하는데 시간이 꽤 걸릴 수 있다.


       



      예제에는 단순히 코드만 있는 것이 아니라 코드에 대한 설명과 해당 코드가 실행되는 과정을 나타낸 도식, 속도까지 보여주며 원리를 상세하게 설명하고 있다. 알고리즘을 시작하거나 어렵다고 생각하는 사람들에게 좋은 도서가 될 것이다.


       


       


       


       


       


       


       


    • 5.jpg


       


       


      개발을 하는 사람이라면 어느 시점부터 알고리즘에 관심을 가지게 되는 것 같다. 어느 순간 자신이 주먹구구식으로 개발을 해 왔다는 것을 느낄때 쯤 알고리즘을 익히면서 보다 깔끔하고 빠른 알고리즘을 적용하는 것에 신경을 많이 쓰는 것 같다. 하지만 시중에 다양한 알고리즘 관련 책들이 나와 있긴 하지만 대부분 개념적인 설명에 머물고 있는 것 같다. 그렇지 않다면 알고리즘이 psedo 알고리즘으로 되어 있어서 제대로 분석하기 어려운 경우도 많은 것 같다.


       


      이 책은 그런 면에서 다른 책들과는 차이점을 보이는 것 같다. 일단 복잡한 수식이나 개념을 글보다는 그림과 예제로 설명한다. 또한 설명하고자 하는 알고리즘도 python 코드로 되어 있어서 python에 어느정도 익숙한 사람이라면 보다 쉽게 알고리즘을 이해할 수 있는 것 같다.  이 책을 접하는 사람은 적어도 프로그래밍을 조금이라도 해 본 사람일 것이다. 전혀 프로그래밍을 해보지 않은 사람이 이런 종류의 책에 크게 관심을 가지지는 않을 것 같다. 다만 이 책에서 설명하는 알고리즘을 좀 더 잘 이해하기 위해서는 어느정도 python 언어에 대한 경험이 있는 것이 좋을 것 같다는 생각이 든다.


       


      책의 시작은 알고리즘에 대한 개념부터 시작한다. 한마디로 알고리즘은 예측 가능한 시간에 정확한 결과를 반화하는, 컴퓨터 프로그램으로 구현된 단계별 문제 해결 방법이라고 볼 수 있다. 여기서 중요한 키워드는 예측 가능한 시간과 정확한 결과, 단계별 문제 해결 방법인 것 같다. 알고리즘에 대해 설명하면서 다양한 문제 해결에 대한 예시를 1장에서 설명한다. 특히 시간 복잡도와 공간 복잡도에 대한 부분을 제대로 이해하고 넘어가야 할 부분이다. 2장에서는 알고리즘 분석에 대해 다룬다. 빅오 표현법을 사용해 알고리즘 성능을 분류하는 방법과 다양한 성능 등급에 대해 설명하고, 정렬 알고리즘을 통해 알고리즘 성능 분석 예를 제시하고 있다. 


       


      3장부터는 실제 다양한 문제에 대한 알고리즘을 다룬다. 해싱, 힙, 정렬, 이진트리, 그래프 등 개발을 하다보면 적어도 한번쯤은 접하게 되는 영역에 대해 자세히 설명하고 있다. 이미 언급한 대로 각각의 알고리즘을 설명할때마다 그림과 예제가 있기 때문에 보다 직관적으로 알고리즘을 이해할 수 있는 것 같다.


       



      5-1.jpg


       


      이 책은 개발자가 본다면 가장 도움이 될만한 책이다. 하지만 전문 개발자가 아니더라도 프로그래밍 언어를 사용한 경험이 있는 사람이라면 이 책에서 언급하는 알고리즘을 어느정도 이해가능하다고 생각한다. 이를 통해 본인이 적용하고자 하는 영역에 알고리즘적인 개념을 추가해서 구현할 수 있지 않을까 생각한다. 알고리즘이란 개발자만의 영역이 아니라 어떤 문제를 해결하기 위한 논리적인 개념으로 볼 수 있을 것 같다. 즉 알고리즘의 개념 중  단계별 문제 해결 방법이 주된 요소 중의 하나라고 생각한다.  단계별 문제 해결 방법은 프로그래밍 언어로 구현할 수도 있고, 수식으로 표현할 수도 있고, 문장으로 표현할 수도 있을 것 같다. 이를 통해 문제 해결을 위한 단계를 차근차근 밟아가는 것이라고 생각한다. 이런 면에서 본다면 이 책은 문제 해결을 위한 알고리즘을 체계적으로 이해할 수 있도록 도와주는 유익한 책이라고 생각한다.


       


       


      "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


    • 요즘음 들어서 알고리즘 관련 된 책을 많이 읽어왔다.


      "Introducing Algorithm",


      "Classic Computer Science Problem in Java",


      "Advanced Algorithms and Data Structure"


       


      다들 좋은 책인데... "Classic Computer Science Problem in Java"를 제외하면 


      책도 두껍고 좀 원론적인 내용들도 많은 편이라 처음부터 끝까지 다 읽기는 조금 어려운 책이다.


       



      그런데에 비해 "똑똑한 코드 작성을 위한 실전 알고리즘"은..
      300쪽 남짓의 적은 사이즈에도 그림위주로 너무도 쉽게 설명해 준다.


      Big(O), 해싱, 힙, 정렬, 트리 그리고 그래프.


      중요한 알고리즘 ( 그리고 자료구조) 를 단계별로 쉽게 설명해 주다 보니 이해하기 쉽다.


      마치 강의를 직접 듣는 느낌이랄까...



      아쉬운점은.. 조금 더 많은 주제를 다루어 주었으면 어떗을까 하는 아쉬움이 들었다.


       


      총평으로는 프로그래밍 초보자도 쉽게 알고리즘에 대해서 이해할 수 있게 잘 쓰여진 입문서이다.


      아쉬운점은 조금더 많은 내용을 다루었었으면 하는 점이고..



      책을 읽은 후 좀 더 다양한 알고리즘 문제를 보고 싶다면 "Classic Computer Science Problem in Java"
      ( Java 이외에 다른 언어로도 책이 쓰여져 있다.) 을 다음 책으로 추천해 주고 싶다.






      한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다



    •  


       





      저자: 조지 하이네만


       


       



      #책소개


       




      더 효율적이고 창의적인 코드 작성을 위한 알고리즘 사용법
      어려운 개념이나 수식 없이 그림과 예제로 학습하기

      좀 더 똑똑한 코드로 프로그램 성능을 향상하고 싶다면 이 책을 펼쳐보자. 이 책은 소프트웨어 개발에서 가장 많이 활용되는 핵심 알고리즘을 각각 언제, 어떻게 사용하면 좋은지 단계별로 상세히 알려준다. 알고리즘 진행 과정을 시각화한 그림과 함께 예제 코드를 한 줄씩 알기 쉽게 설명하며, 성능을 직접 측정해볼 수 있도록 실행 가능한 코드를 제공한다. 장마다 수록한 연습 문제는 문제 해결 능력을 향상해 코딩 인터뷰를 준비하는 데도 도움이 된다.
      전문 개발자뿐 아니라 자신의 연구 분야에 알고리즘을 적용하려는 사람 모두에게 유용하다. 컴퓨터 과학에 관한 배경지식이 없어도 프로그래밍 언어를 다뤄본 경험이 있으면 충분하다. 예제 설명과 샘플 코드는 직관적이고 접근성이 높은 파이썬으로 작성되었다. 다양한 문제에 대한 접근 방식과 풀이법을 살펴보면서 알고리즘의 원리부터 응용 방법까지 확실하게 익혀보자



      라고 교보문고가 말하더라.




       


       




       



      # 이 책의 특징


       





      1. 파이썬



      우선 파이썬이 대세라고 해서 그런지.. 모두 파이썬만 씀.. 수요가 있으니까 책을 쓰는 것은 맞는데 조금 그렇다.



      나는 C++, C#을 사용해서 그렇다. 하지만 나는 파이썬도 사용했지. 읽는데는 무리 없지만



      참고하면 된다.


       



      2. 구성



      어느 책이랑 다를 바가 없는 구성이긴 하다. 다만 설명하는 방식이 조금 다르다는 느낌?



      알고리즘 책 답게 문제를 푸는 방법이 아니라 근본을 설명해준다.


       



      3. 용어설명



      우선 처음 접하는 알고리즘이라면 이 책을 추천할만함. 설명 좋음


       



      4. 내용이 그렇게 어렵지 않음



      이미 아는 내용이 많을 수 있기에 중급자 이상이 배운다는 느낌보다는 복습이라는 느낌으로 접근하면 좋음


       




       



      #후기


       



      알고리즘을 잘 풀게 해준다고는 못하겠다.



      다만 생각을 하고 풀 수 있게 한다. 다시 말하자면 끝까지 가게 되면 근본적인 마음가짐을 가진 사람이 이긴다.



      이 책에 있는 방향성만 잘 지킨다면 잘 배워나갈 수 있을 것이다.


       


       




       


       



      "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


       





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

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