여씨의 개발이야기

[책 리뷰 / 길벗] 문제 해결력을 높이는 알고리즘과 자료구조 본문

📚 Book/📝 Review

[책 리뷰 / 길벗] 문제 해결력을 높이는 알고리즘과 자료구조

yeossi 2022. 4. 10. 18:26
"이 문제에는 어떤 알고리즘을 사용해야 할까? 더 빠르게 계산할 수도 있을까? 내가 직접 알고리즘을 설계해보자! 어떤 문제는 해결할 수 없다는 걸 증명해보자! 다양한 상황에서 스스로 생각해 문제를 해결해 내는 문제 해결력을 키우자!"

이 책을 소개하는 표지의 문구이다. 이번에 좋은 기회로 <문제 해결력을 높이는 알고리즘과 자료구조> 책을 얻게 되었다.

저자는 오츠키 켄스케라는 일본인이며 아래와 같이 이 책을 소개하고 있다.

오츠키 켄스케(지은이)의 말

알고리즘을 배운다는 건 단순히 지식을 흡수하는 것이 아니라 세상의 다양한 문제를 해결하는 수단을 늘려가는 것입니다. 알고리즘이란 원래 문제를 풀기 위한 절차를 말합니다. 알고리즘 동작을 구체적으로 이해하는 걸 넘어서 실제로 문제 해결에 도움이 될 때 비로소 알고리즘을 배웠다고 할 수 있습니다.
알고리즘을 배우기 시작한 후 세상의 여러 문제와 마주쳤을 때 세계관에 혁명이 일어난 걸 기억합니다. 저도 알고리즘을 배우기 전에는 문제를 해결하는 행위란 고등학교 수학에서 배우던 ‘공식’ 같은 걸 찾는 거라고 생각했습니다. 그러니까 문제를 푸는 구체적이고 명확한 답을 구하는 것이 문제 해결이라고 무의식적으로 생각했습니다. 하지만 알고리즘을 배우고 나서는 ‘구체적인 답을 구하지 못하더라도 답에 다가가는 절차를 찾는 것’이라고 문제 풀이를 바라보는 관점이 변했고, 그에 따라 문제 해결 수단이 크게 늘어난 기분이 들었습니다. 이 책으로 여러분과 이런 감각을 공유할 수 있게 되길 바라며, 알고리즘을 설계하고 구현하는 즐거움을 느낄 수 있다면 저에게도 큰 즐거움일 것입니다.

저자의 말을 보고 무척 감명깊었다. 본인도 알고리즘 is 수학공식 이어서 알고리즘은 코딩할때나 생각하는 거라는 인식이 깊게 박혀있었는데, 저자는 일상 생활에서의 알고리즘의 필요성을 강조하는 거 같다. 

책은 크게 구성이 아래와 같이 나뉘어진다. 설계 기법 / 자료 구조 / 그래프 그리고 P와 NP, 어려운 문제 대책법까지 소개되어있다. 정처기 공부를 할 때 많이 배운 내용이라 크게 생소하지 않은 부분들이지만 이를 프로그래밍 기술로 예시를 들어 설명하려니 조금은 어렵고 그만큼 코딩을 할 때 도움이 많이 될 거 같았다. 

 

첫장은 알고리즘에 대한 개념이 나온다. 개인적으로 일본인이 만든 개발책...?을 안 좋아했었다. 일본인들이 만든 개발 언어 관련 책들을 보면 수학의 정석같은 느낌의 서술이 많은 책들이 많아서 그랬던 거 같은데 이 책은 최근에 나온 책이라 그런지 생각 외로 깔끔한 요약정리와 소스코드 해석이 마음에 들었다. 예시도 위에서 말했던 것과 같이 일상생활에서 접근할 수 있는 알고리즘을 전달하려는 저자의 의도가 잘 엿보였다.

 

그림으로 설명한 내용들이 많은데 이것도 도움이 꽤나 됐던 거 같다. 아무래도 자료구조 알고리즘은 글로만 설명하면 너무 추상적인 개념들이기 때문에 그림이 필수라고 생각되는데 이에 이런 저런 에피소드를 가진 그림을 보여주며 예시를 들어주니 이해가 잘 갔다. 

솔직히 이건 왜 그림을 저렇게 그렸는 지 모르겠는;

 

매 챕터마다 예시 코드도 구현이 되어있다. C++ 소스로 이루어져있는데 이전에 배웠던 내용을 다 까먹어서 이 책을 보며 다시 한 번 개념을 잡을 수 있었어서 좋았다. 

 

이 책은 먼저 도표나 그림을 이용해 개념을 잡아주고, 증명 과정을 보여줌으로써 다시 한 번 이해를 하고, 이후 실제 코드를 구현하는 과정, 성능 개선 단계까지 보여주고 있다. 대학교를 다녔을 때 배웠던 알고리즘 과목과는 사뭇 다른 커리큘럼인데, 개인적으로는 이 책이 더 좋았던 것 같다. 일반적인 대학 커리큘럼에서는 알고리즘 자체를 원론적으로 다루기 때문에 IT 분야를 잘 모르는 사람이라면 접근하기 매우 어려울거란 생각이 들었는데, 이 책을 통해 알고리즘을 공부하면 잘 모르는 사람들도 쉽게 일상생활에도 적용할 수 있을 것 같다. 

 

이 포스팅은 출판사로부터 책을 제공받아 주관적으로 작성된 글입니다.

Comments