독서/서평

[쓰면서 익히는 알고리즘과 자료구조] 나만의 알고리즘 디비 만들기

Dibrary 2022. 2. 21. 10:00
반응형

개발자라면 뗄레야 뗄 수 없는게 '자료구조'와 '알고리즘'이다. 그 중에 이 책은 제목 중 '알고리즘'에 강점이 있는 책이다.

알고리즘은 말 그대로 '문제를 푸는 방법'이다. 초,중,고등학교를 기본교육으로 들은 사람이라면 '수학' 과목을 잊을 수 없을텐데 수학 문제를 푸는 것과 같은 이치인 셈이다. 반드시 생각을 해봐야 하고, 단순히 배운 개념만 가지고는 문제를 푸는데 써먹을 수 없었던 기억이 있을 것이다.

알고리즘도 몇몇 형식화된 그리고 유명한 것들이 존재한다. 문제는 그것들을 아주 완벽히 암기를 했다 하더라도? 실제 주어진 문제에 해당 알고리즘을 사용해야 하는지 아닌지를 판별할 수 없다.

그럼 이 책은 그 방법을 알려주는가? 그것도 아니다.

그러나, 이 책의 강점은 내 생각을 정리할 수 있는 하나의 템플릿을 제시해주고 해당 템플릿을 사용해 접근해 나가는 방법을 소개한다.

먼저 문제에서 주어진 조건을 분석하고 해당 조건에 대한 시간복잡도를 계산하는 것 부터 시작한다. 그 뒤에 해당 복잡도 내에 해결할 수 있는 알고리즘을 간추릴 수 있다. 이 과정이 하나의 캔버스 안에서 이뤄지며, 잘 작성된 캔버스는 차후에 '또' 사용할 수 있다는 것이다.

처음에는 문제에 내가 아는 알고리즘을 쓸 수 있는지 없는지를 몰랐다면, 캔버스가 쌓인 후에는 손쉽게 찾아볼 수 있고 또 같은 알고리즘으로 풀이를 해 나갈때 다른 접근 방법을 사용했는지도 살펴볼 수 있다.

물론, 읽기만 하고 직접 실행에 옮기지 않는다면 이 책의 의미가 없다.

템플릿은 습관을 위한 내용이라면, 책 내부에는 컴퓨터공학과 과목의 알고리즘의 기초에 해당되는 내용을 거의 전부 수록해놓았다. 파이썬이라는 언어를 사용하면서 자료구조를 어떻게 처리하는지, 해당 자료구조가 실제 문제에 어떻게 적용되는지도 확인할 수 있다.

아무래도 비전공자로 개발자의 길을 들어선 나에게는 좀 더 쉽지만 알차게 중급으로 넘어가게 해 준 가교 역할을 한 책이다.

728x90
반응형