'똑똑한코드작성을위한실전알고리즘'에 해당되는 글 1

  1. 2022.06.23 [IT] 똑똑한 코드 작성을 위한 실전 알고리즘

< 똑똑한 코드 작성을 위한 실전 알고리즘 > | 조이 하이네만 지음

| 윤대석 옮김 | 한빛미디어

 

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

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

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

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

 


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


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

이전 1 다음