지금까지의 알고리즘은 애들 장난이었다 (똑똑한 코드 작성을 위한 실전 알고리즘)
728x90
반응형

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다...만진심이 담겨있습니다.
허위 사실 유포는 😎일절 없음.

 

 

알고리즘을 언급할 때가 언제일까. 채용 프로세스 중 코딩 테스트에서 많이 언급을 했었다. 그러다보니 '알고리즘? 그거 코테(코딩 테스트 준말)할 때만 필요하잔아.'라고 생각했던 적도 있다. 웹 개발자든, 백엔드 개발자든, 모바일 개발자든 알고리즘을 실무에서 제대로 활용해본 분이 얼마나 될까 싶기도 하다.

 

그런 생각을 하다가 알고리즘이 필요한 순간을 마주 했을 때 당혹감은 정말 어마어마하다. 대용량 트래픽을 처리해야 한다거나 복잡한 연산이 수행되어야 하는 경우 등등 B2C 서비스부터 게임까지 다양한 방면에서 이런 순간을 마주할 수 있다. 그럴 때 괜시리 엉뚱한 곳에 원망을 돌린다. '제대로 된 알고리즘을 배워봤어야지. 맨날 코테용 알고리즘만 했으니 제대로 할 수 있을리가.' 그런 생각을 했다면 더 늦기 전에 공부를 하자. 실무를 위한, '실전'을 위한 서적도 있으니 말이다.

 

꽃게랑 땡기는 표지

 

 

꽃게랑 땡기게 하는 표지를 가진 '똑똑한 코드 작성을 위한 실전 알고리즘'은 코테용으로 읽기는 부적합할 수 있다. 코테보다는 이 책의 타이틀에 등장하는 '실전'이라는 부분에 초점을 맞춰서 볼 필요가 있다. 단순한 문제 풀이식 알고리즘 설명이 아니라 알고리즘의 구조적 배경부터 실전 사용시 기대치, 실제 성능 비교 등이 등장한다.

 

이 서적을 읽기 전에 몇가지 주의사항이 있다.

  • 기본적인 파이썬을 이해할 것
  • 코딩 테스트 대비 문제 중 중급 수준의 문제까지는 풀어본 경험이 있을 것
  • 자료구조 기본 지식이 있을 것

 

서적 자체는 다른 기술서에 비해서 두껍지 않다. 하지만 1장의 무게감은 상당하다. 위 3가지가 부족할 경우 그 무게감이 두배, 세배로 느껴지게 될 것이다. 파이썬을 완전히 이해할 필요는 없다. 내용의 문맥을 이해할 정도면 충분하다. 코딩 테스트나 자료구조를 공부할 때 배우게 되는 개념들이 많이 등장한다. 그런데 그 개념을 이 책으로 처음 배우면 상당히 어려울 수 있다. 기본적인 개념을 따로 탑재 후 이 책에서 구조적 배경과 실전 활용을 습득하면 더 쉽고 빠르게 내용을 흡수할 수 있을 것이다.

 

점근적 분석을 도표와 그래프로 설명하고 있다

 

 

몇가지 예를 들어보자. 코딩 테스트를 할 때 가장 먼저 접하는 것 중 하나가 빅오 표기법 혹은 점근적 표기법이다. 알고리즘의 효율성을 알려주는 표기법으로 O(1), O(NlogN), O(N) 등등 이렇게 작성을 하기에 빅오 표기법으로도 불린다. 이 책 2장에서는 점근적 분석을 알려준다. 효율적인 알고리즘이 어떤 형태인지를 실제 테스트해보면서 문제 인스턴스 크기와의 상관 관계를 설명한다. 그 뒤로는 이진 배열 탐색을 통해 여러 복잡도 클래스를 비교하고 이해할 수 있다.

 

또 다른 예로는 정렬이 적절해 보인다. 정렬 역시도 코딩 테스트의 단골 키워드이다. 삽입 정렬, 선택 정렬, 병합 정렬 등 코테를 위해 학습을 해봤겠지만 실전에서는 어떤 의미를 가지는지 이해하지 못한 분들도 계셨을 것이다. (그게 나야.) 이 책의 5장에서는 정렬의 성능 위주로 설명을 하고 있다. 특히 인상적인 부분이 선택 정렬과 삽입 정렬 성능 설명이 끝난 뒤 5.5절에서 재귀와 분할 정복을 설명하는 부분이다. 재귀 실행 과정을 도식화하여 텍스트를 전체 읽지 않아도 저자의 의도를 쉽게 이해할 수 있었고, 이어질 병합 정렬, 퀵 정렬 등에서 분할 정복을 활용하여 드라마틱하게 성능을 개선한 결과를 볼 수 있다.

 

도표만 보아도 쉽게 이해할 수 있도록 지면을 최대한 활용하고 있다.

 

 

이렇게 매력적인 서적이지만 입문 서적은 절대 아니다. 수학적 사고가 어느 정도 훈련되어 있거나 코딩 테스트 등으로 알고리즘이 익숙한 분들에게 추천해 줄 수 있는 서적이다. 이 글을 읽는 분이 만약 입문자라면 이 책을 타이틀을 기억하고 있다가 언젠가 알고리즘 역량을 업그레이드하고 싶어질 때 이 책을 찾으면 된다. 그 때가 되면 당신의 입맛에 딱 맞는 꽃게탕이 되어 있을 것이다.

728x90
반응형