본문 바로가기
취미생활/책&영화 리뷰

알고리즘 책 추천 - Introduction to Algorithms 3/e, 한국어판, 원서 둘 다 보는 중입니다

by 피타칩스 2015. 11. 6.


제가 지금 보고 있는 책은 이 책입니다. 토마스 콜맨 Thomas Cormen 의 Introduction to algorithms 인데요, 알고리즘에 관해서는 권위있는 기본서입니다. 국내외 많은 대학에서 알고리즘 수업교재로 쓰기도 하고, 레퍼런스용으로 소장하는 분들도 있는것 같습니다. 지금 3판(2009)인데 초판이 1990년에 나왔으니까 거의 10년에 한 번 개정판을 내는것 같네요. 아마 다음 개정 4판은 2020년 경이 아닐까 합니다.


<이건 영어판>


저는 호기롭게!! 100달러짜리 영어판을 샀는데요, 결국 지금은 한빛미디어에서 번역해서 낸 한국어판을 같이 보고 있습니다. 하핫;; 외국 컴퓨터서적들이 번역되면 질이 떨어진다는 이야기가 있는데, 저는 개인적으로 이 번역서 괜찮은거 같습니다. 만약 영어와 한국어 능력이 비등비등한 분이라면 이 글을 읽고 있지도 않겠지만, 저는 당연히 영어원서를 추천합니다. 영어가 편하진 않지만 자기가 좋아하는 분야에서 영어로 쓰인 논문을 읽을 수 있거나, 영어가 필요하신 분들 이런 분들에게도 전 영어판 추천합니다. 영어울렁증이 있다거나 한국어가 아니면 내용이 머리에 안 들어온다 하시는 분들, 알고리즘 공부하는데 언어보다는 내용 자체를 이해하는 게 중요하지! 라는 생각이 드시는 분들에겐 전 한국어판 추천합니다. 심지어 한국어판은 4만 5천원대, 더 할인받으면 4만원 초반에도 가능해서 10만원이 넘어가는 원서보다 가격면에서 우월합니다.


<이건 한국어판>


Introduction To Algorithms, Third Edition
국내도서
저자 : 토머스 코멘(Thomas H. Cormen),찰스 레이서손(Charles E. Leiserson),로날드 리베스트(Ronald L. Rivest),클리포드 스타인(Clifford Stein) / 문병로역
출판 : 한빛아카데미 2014.06.30
상세보기


사람들이 컴퓨터 서적 번역판을 보면 번역기 돌렸냐, 이게 한국말이 맞냐... 뭐라고 하시는 분들 있는데, 취미로 번역을 하기도 하고 원서와 한국어판 두개를 동시에 보는 사람 입장에서 이 책은 그런 비판을 받을 책은 아니라고 말씀드릴 수 있습니다. 중간중간 말이 꼬이는 데가 있긴 하지만 이게 보통 원서 그 자체의 문장이 엄청 길어서 영어로 보더라도 불편한 문장일 때도 있고, 또 완벽한 번역이라는 게 힘들기도 하고 그래서 그런 경우입니다. 다만, 진짜 이상하거나, 아예 한 문장 전체가 누락된 경우도 몇 번 봤는데요, 그런 부분들에서 한국어가 너무 이해가 안 된다싶으면 영어 원본을 찾아서 보면 이해가 됩니다.


그런데 이런 몇군데 참고하자고 엄청 비싼 영어책을 사긴 좀 그렇죠. 물론 저처럼 책 욕심 영어 욕심부려서 100달러 주고 원서를 사셔도 되지만 인터넷에 introduction to algorithms 3/e cormen 이런식으로 검색하면 무료로 다운로드 할 수 있는 pdf 파일이 있을 겁니다. 못 찾으시면 섭섭하지만 2판이라도 받으실 수 있을 겁니다. 책에 있는 예제 solution도 pdf로 돌아다니는데 잘 찾으면 잘 나올겁니다. 그래도 원서가 한국돈으로 얼만지 가격 궁금하면 인터넷 서점 들어가서 확인해보시길 바랍니다요. 


컴퓨터 공부 시작한 지 얼마 되지도 않아 공부할 것도 많을텐데 왜 이 책을 샀냐면요, 많은 사람들이 프로그래밍의 핵심은 "알고리즘과 코드구현"이라고 한 말에 혹했기 때문입니다. 그 중에서도 알고리즘의 중요성을 사람들이 정말 강조하더군요. 처음 이 말을 들었을 때에는 아니, 그렇다면 그많은 프로그래밍 언어들은 도대체 뭐하러 만든건가 싶어서 갸우뚱 했습니다.


하지만 지금 와서 보니 공부시작한지 얼마 되지도 않았지만 왜 교수님들과 컴퓨터전공자들이 알고리즘을 강조했는지 알거 같습니다. 알고리즘은 결국 문제해결, 그것도 효율적인 문제해결이기 때문입니다. 이에 반해 코드를 짜는 일은 알고리즘이 해결한 문제들에 한해서만 할 수 있는 일입니다. 물론 코드를 잘 짜내는 노하우와 경험은 누구에게 팔 수도 그냥 쉽게 얻을 수 있는 것이 아니지만, 아무리 코딩 장인이라고 하더라도 문제해결의 열쇠인 알고리즘을 구상해내지 못한다면 문제에 대한 답은, 그 프로그램은 못 만드는 겁니다. 게다가 프로그래밍 언어는 한가지만 잘 할 줄 알면 다른 언어를 배우는 것은 그렇게 어려운 일이 아니라고 합니다. 결국 인간이 규칙성을 가지고 만든 언어들이니까요. 그래서 프로그래밍 언어를 다양하게 배우는 것보다 그 시간에 알고리즘을 공부해서 지능발달(?) 내지 문제해결력 증진 하는게 낫겠다 싶어서 알고리즘 책을 샀습니다.


지금 15장 동적프로그래밍 dynamic programming 부분을 보고 있는데요, 재밌다고 하면 너무 너드같겠지만 재밌습니다. 15장 앞에서는 알고리즘의 기초인 '효율'의 의미, 시간효율을 표현하는 Big-O notation, 분할정복방법 divide and conquer의 알고리즘 케이스들로써 퀵 소트, 힙 소트 등을 다루었고, 추가적으로 자료구조의 기본인 스택, 큐, 리스트 등도 한 번 훑어주면서 해시테이블, 이진검색트리, 레드블랙트리 등으로 전진하는데 흥미롭습니다. 컴퓨터 공부하기 전에는 들어본적도 없는 것들인데 책이 전공서적 치고 꽤나 친절해서 흥미잃지 않고 볼 수 있는것 같아요. 그렇다고 소설책처럼 주욱 읽을 수 있는건 아닙니다. 이렇게 써놓으니까 마치 제가 엄청나게 알고리즘을 잘 아는거 같아보이지만 아닙니다. 저는 사실 컴퓨터의 1도 모르는 컴알못입니다. 두 달전까지만 해도 저는 공대, 자연대, 이공계열과 아주 먼, 아주 아주 먼 쪽에 있었습니다.


특히 15장이 재밌다고는 했지만 14장까지는 기본 알고리즘에 대한 내용이었고 15장부터 Advanced Design, Advanced Data Structure 여서 내용이 조금씩 어려워지는게 사실입니다. 좀 부담이 되긴 됩니다. 일단 15장은 힘겹게 힘겹게 읽긴 했습니다만 뒤로 가면 포기할지도 몰라요. ㅋㅋ


아무튼 저는 이 책을 저는 알고리즘 공부하는 분들한테 추천하고 싶네요. 번역서라는 점에서 읽기에 편하지만은 않지만, 기본적인 내용부터 심화된 내용까지 책 한권에 많이 담고 있는것 같습니다.


만약 공대 등등에서 수업 교재로 이 책을 쓴다면 도서관에서 빌리는 것보다 하나쯤 사두시는 걸 추천드립니다. 그만한 가치를 할거라고 생각합니다.


공감♥은 제게 큰 힘이 됩니다. 감사합니다.


댓글