단숨에 이해하는 알고리즘
길벗 출판사의 개발자 리뷰어' 활동으로 『그림으로 이해하는 알고리즘』 서적을 제공받아 작성하게된 서평입니다.
컴퓨터 공학 비전공자이기 때문에 기초 지식에 대해 부족한 것이 많습니다. 현업에서 아직 단순 구현에도 급급하기 때문에 알고리즘이 필요한 경우는 없었지만, 개발 역량을 높이기 위해 지나칠 수 없는 영역이었죠. 물론 코딩 테스트도 빠질 수 없을 것입니다. 또한 세상에 공개되어있는 좋은 품질의 코드를 보며 이해하기 위해서도 꼭 학습해야한다고 생각했습니다.
하지만 어디서부터 어떻게 시작해야하는지 늘 막막했죠. 어떤 책으로 알고리즘 공부의 첫 시작을 떼야할 지 고민하던 와중에 ‘그림으로 이해하는 알고리즘’을 알게 되었습니다. 이전에 저는 특정 알고리즘에 대해 궁금하여 서칭해보아도 설명해주는 문장을 전혀 이해할 수 없었어요. 이 책을 훑어보았을 때 실려있는 그림은 복잡하지 않고 한눈에 알아보는데 전혀 어려움이 없어 끌렸습니다! 와중에 길벗 출판사에서 리뷰어를 모집하는 책 중에 이 책이 있어 바로 신청하게 되었습니다.
이 책은 기본 알고리즘 33개 + 자료 구조 7개의 구조와 동작 원리를 그림을 통해 직관적으로 설명합니다. 종류는 정렬, 배열 탐색, 그래프, 보안 알고리즘, 클러스터링, 데이터 압축이 있었으며, 추가로 기타 6개의 알고리즘을 다루었죠.
비전공자로서 알고리즘에 대해 학습을 해본 적이 없습니다. 때문에 무수히 많은 알고리즘이 존재하는데, 이름이 너무도 많아 어디서부터 어떻게 접근해야 하는지 막막했습니다. ‘그림으로 이해하는 알고리즘’은 알고리즘 33개에 대한 기초를 쉽고 빠르게 뗄 수 있었습니다. 제목 그대로, 직관적인 그림과 쉬운 문장 덕분에 이해하기 수월했습니다!
책의 그림만 보고도 이해가 쉽지만, 알고리즘의 순서 설명이 길어지면 흐름을 놓치기도 합니다. 이때 저자의 ‘알고리즘 도감’ 앱에서 해당 알고리즘의 애니메이션을 함께 보면 이해가 수월했습니다.
알고리즘의 과정을 그림을 통해 시각적으로 설명한 후, ‘해설’과 ‘보충자료’로 구체적인 내용을 전달합니다.
책의 분량은 약 260 페이지입니다. 그럼에도 그림과 짧고 쉬운 문장으로 구성되있어요. 때문에 체감상 무척 가볍게 여겨집니다. 즉, 어떤 알고리즘에 대한 기억이 흐릿할 때 그만큼 마음 간편히 집어서 해당 부분을 찾아 볼 수 있다는 것이죠.
각 알고리즘에 대해 코드로 어떻게 구현하는지 예제가 없는 것이 다소 아쉬웠습니다. 책의 취지에 맞게 코드 레벨이 없는 것을 이해하나, 간단하게라도 함께 설명되었다면 학습한 알고리즘을 어떻게 프로그래밍에 적용할 수 있는지까지 알 수 있었을 것이라 생각합니다. 때문에 이 책을 통해 알고리즘의 얼개를 이해하고, 그 다음 심화 단계를 다룬 책 혹은 직접 구현하며 익힐 수 있을 것 같습니다.
각 알고리즘이 어떤 개념인지 이해할 수는 있으나, 해당 알고리즘을 어떤 분야에 어떻게 활용할 수 있는지는 알기 어렵습니다. 실제적인 활용 사례를 덧붙였다면 이후에도 기억에 잘남을 것 같아 다소 아쉬웠습니다.
저는 알고리즘에 대해 지식이 전무했었고, 이따금 그에 대한 내용을 찾아보아도 복잡한 글로 작성된 설명을 읽을 때 이해가 전혀 되질 않았습니다. 예를 들면, ‘벨먼 포드 알고리즘’에 대해 궁금하여 위키 백과에서 찾아보았다고 가정하겠습니다.
벨먼-포드 알고리즘(영어: Bellman-Ford algorithm)은 가중 유향 그래프에서 최단 경로 문제를 푸는 알고리즘이다. 이때 변의 가중치는 음수일 수도 있다. 데이크스트라 알고리즘은 벨먼-포드 알고리즘과 동일한 작업을 수행하고 실행속도도 더 빠르다. 하지만...
벨먼-포드 알고리즘 | 위키 백과
벨먼 포드 알고리즘에 앞서 이미 ‘가중 유항 그래프’, ‘최단 경로 문제’, ‘가중치’부터가 장벽입니다. 아예 머릿속에 그려지지 않는 문장이죠. 그런데 이 책은 무작정 각 알고리즘을 하나씩 소개만 하는 책이 아니었습니다. 알고리즘이 무엇인지부터, 시간 복잡도, 데이터 구조, 정렬, 그래프, 보안, 클러스터링 등 관련 알고리즘에 앞서 기본 개념부터 이해시켜주었어요.
‘그림으로 이해하는 알고리즘’을 읽고 알고리즘에 대한 기초 지식이 생겼고, 그 다음 단계로 나아갈 수 있게 되었습니다. 복잡하고 이해할 수 없었던 각 알고리즘의 과정을 시각적으로 쫓은 덕분에 기억에 분명히 새겨졌어요. 이제 이 흥미를 토대로 심화 과정을 밟을 차례입니다.