Learning Algorithms

조지 하이네만 지음

윤대석 옮김

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

2022년 6월

2022 나는 리뷰어다 활동의 다섯 번째 리뷰

 

6월에 리뷰할 책은 "Learning Algorithms"이다.

가볍게 300페이지 좀 안 되는 책은 알고리즘을 공부하고자 하는 이에게 좋은 책이라 생각되며,

파이썬을 조금 공부해보셨던 분이라면 더 좋은 책일 것이다.

 

저자는 소프트웨어 엔지니어링 및 알고리즘 분야에서 20여 년간 경험을 쌓은 컴퓨터공학과 교수다. 내용이 조금 딱딱하진 않을까 했지만 옮긴이 윤대석 님이 잘 옮겨주신 것 같다. 현직 엔지니어로서 알고리즘과 운영체제를 꾸준히 공부하시는 분이시고, [쓰면서 익히는 알고리즘과 자료구조]의 저자이다. 

 

알고리즘의 중요성이란 몇 번을 말해도 지나치지 않다.

컴퓨터 과학의 핵심이자 정보화 시대의 필수 요소로서, 수많은 분야의 인터넷 요청에 사용되고 있다.

컴퓨터 과학 내에서 알고리즘을 발견하고 적용할 수 있는 공부를 하는 것은 쉽지 않다.

대부분 수학적 증명과 컴퓨터 과학 개념을 강조하기에 효율적인 공부가 어렵다.

 

하지만 이 책은 코드에 당장 적용해 효율을 향상해주는 다양한 알고리즘을 소개하며 파이썬으로 작성된 예제 코드를 제공한다.

현재 파이썬은 다양한 분야에서 사용되며, 가장 인기 있고 사용자 친화적은 프로그래밍 언어 중 하나이다.

책에서는 알고리즘을 최대한 시각화하고 상세한 설명으로 독자의 개념 이해를 돕는다.

 

컴퓨터 과학에서 사용되는 자료구조와 기본 알고리즘을 알려주기에 효율적인 프로그래밍 작성이 되도록 도와줄 책이며, 코딩 인터뷰를 준비하는 개발자와 지망생에게도 좋은 가이드가 될 것이라 조지아 공과대학교의 즈비 갈릴리 명예 컴퓨팅 학장은 추천을 해주었다.

 

사실 실무에 종사중인 개발자에게 알고리즘의 학습은 꼭 필요한 공부가 아니라고 생각할 수도 있다.

하지만 알고리즘을 학습하게 되면 해결하고자 하는 문제를 다양한 시각으로 풀어내는 능력을 키울 수 있고, 좀 더 효율적인 소프트웨어를 개발할 수 있다는 장점이 있다. 이 책은 알고리즘이 어떻게 구성되는지 단계별로 꼼꼼히 설명해 기초를 실전에 잘 적용하도록 이끌어준다.

알고리즘 분야는 방대하기 때문에 이 책을 시작으로 접하면 아주 좋을 것이다.

 

책에서 다루는 내용에 대해서 살펴보자.

기본 타입을 사용해 정보를 구성하는 방법부터 시작하여, 자료구조에서 직접 작동하는 알고리즘, 스택이나 우선순위 큐와 같은 기본 추상 데이터 타입에 의존하는 복잡한 알고리즘까지 다양한 알고리즘이 어떻게 성능을 달성하는지 이해를 돕도록 하고 있다.

 

책의 본문 일부를 보자.

그림을 통해 독자의 이해를 돕고, 표를 통해 확실하게 비교를 할 수 있도록 도와주고 있다.

직접 코드를 치면서 이해를 하고, 각 챕터마다 마지막엔 연습 문제를 통해 문제 해결 능력을 키워주고 있다.

 

시중에 많은 알고리즘과 자료구조 관련한 책이 많지만, 이 책은 알고리즘 공부를 시작하는 사람에게 아주 적합한 책이 될 것이다.

비교적 친근한 파이썬이라는 언어를 사용하는 것도 큰 장점이 될 것 같다.

 

알고리즘 공부, 이젠 진짜로 시작해 봅시다.

 

Love Yourself.

형광펜 내가 칠한거 아니다.

알고리즘 설계 캔버스를 작성하며 배우는 알고리즘 문제 해결 전략

 

윤대석 지음

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

벌써, 5월.

이번 나는 리뷰어다 활동 책은 윤대석 님의 쓰면서 익히는 알고리즘과 자료구조이다.

 

4월에 이직 후에 전혀 신경을 못 쓰고 있다가 마감날이 가까워졌다는 걸 인지하고 부랴부랴 책을 폈다.

 

개발 공부를 하면서 모든 사람들이 알고리즘과 자료구조는 기본적으로 공부를 해야 하는 과목이라고 이야기를 한다.

하지만 이 시점에 내가 궁금한 건, 그렇게 말씀하신 본인들은 알고리즘과 자료구조 공부를 제대로 하셨나이까?

(나라는 사람이 그랬다. 중요하다 생각하고 주위에도 그렇게 이야기하면서 정작 나 자신은 그.러.질. 못했다. 죄송합니다 주위분들!)

 

학교를 다니면서 수강 과목으로 소화하긴 했지만 과제와 시험에 치중된 부분 위주의 공부로 인해 머릿속에 깊게 남은 것이 없다.

 

여러 단어들의 반복적인 나열이었을 뿐...

 

그래서 이번에 5월 리뷰 도서는 꼭 봐야지 라는 생각으로 신청했지만, 역시나 다 보지 못했다.

하지만 시간이 걸리더라도 완독은 분명히 할 것이다.

(어디 가서 개발자 인양 이야기를 하려면 뭐가 뭔지 명칭이라도 알아야지!!)

 

지은이가 말하는 알고리즘 공부란 본인의 역량이 월등히 발전했다고 체감하기 힘들고, 동기부여가 상대적으로 부족할지도 모른다고 이야기한다. 사실 본인도 공감하는 바였다. 최근에도 더 실무에 가까운 스프링에 대한 깊이와 JPA 활용에 대한 공부를 하고 있고, 클라우드에 대한 리서치를 진행하는 중이기 때문에, 알고리즘이란 마치 정보처리입문과 같은 너무나도 이론적이고 개론적인 학습이라 생각했기 때문이다.

 

하지만.

날아다니는 개발자와 보통의 개발자들의 차이는 알고리즘에서 차이가 난다.

보통의 개발자들은 필요한 기능을 구현해 내는 것이 목적이지만,

날아다니는 개발자는 그 속에서 문제를 찾아내고, 개발 품질 향상에 큰 기여를 할 수가 있다.

 

아직 주니어 개발자들에게는 크게 와닿지 않을 수도 있겠다.

머리로는 필요성을 느끼겠지만 그들 역시 실무에 치중된 공부를 하고 있을 테니...

 

하지만 모두가 인정하는 한 가지는,

유명한 IT 기업들은 알고리즘을 필요로 하는 코딩 테스트를 진행한다.

코딩 테스트를 통과하지 못하면 유명한 회사에 입사할 수 있는 가능성이 현저히 떨어진다는 이야기다.

 

그.만.큼!

알고리즘과 자료구조는 굉장히 중요한 공부이다!

 

그럼 이제 책을 살펴보자.

이 책은 독특하게 노트 레이아웃을 이용한다. hiredintech 사이트에서 제공하는 알고리즘 설계 캔버스를 보자.

 

https://www.hiredintech.com/courses/algorithm-design

 

HiredInTech's Training Camp for Coding Interviews

Algorithm Design for Tech Interviews Ace the Tech Interviews This course prepares you for the algorithmic problems at your tech interviews. The course covers several algorithmic areas. For each area you will find introductory theoretical lessons and a set

www.hiredintech.com

이 레이아웃을 활용하면 문제 해결 과정에서 실수할 수 있는 부분을 줄일 수 있을 것이라고 한다.
자세한 내용은 사이트 및 본 책을 꼭 보고 확인하도록 하자.

 

책은 자료구조와 알고리즘을 분류하여 구성되어 있다. 코드는 파이썬으로 만들어졌고, 필요한 라이브러리 호출에 대한 설명도 있다.

(고로, 코딩을 많이 접해보지 못한 분들은 파이썬에 대한 공부를 1회전은 하고 이 책을 보시는 게 좋겠다!)

 

챕터는,

1장 - 배열 (Array)

2장 - 문자열 (String)

3장 - 연결 리스트 (Linked List)

4장 - 스택 (Stack)과 재귀 (Recursion)

5장 - 큐 (Queue)

6장 - 트리 (Tree)

7장 - 동적 프로그래밍 (Dynamic Programming)

 

총 7장으로 구성되어 있고, 이 책을 학습하고 나면 온라인 코딩 사이트의 easy, medium 난이도 수준의 문제는 어느 정도 접근이 가능하다고 말하고 있다.

 

그리고 가장 중요한 것은, 총 387 페이지로 구성되어 있다는 것이다.

본인은 개발 공부를 하면서 나름 방법 아닌 방법이 있다.

어떤 새로운 분야에 대한 공부를 시작하고자 한다면, 시중에 나와 있는 책들 중에 가장 페이지수가 작은 책을 산다.

(물론 한빛미디어 급의 출판사 네임밸류는 있어야 한다.)

그렇게 책을 1회전 한 후에, 더 공부가 필요하다 싶으면 그때 좀 더 두께가 있는 책을 사전처럼 활용하는 편이다.

 

시중에 나와 있는 알고리즘과 자료구조 관련 책중에 이 정도 두께는 얇은 편은 아니지만, 충분히 독파가 가능한 페이지다.

물론 더 페이지수가 적고 보기 편한 책들이 있겠지만, 한빛미디어를 믿어보자.

 

그리고 필자의 중요한 말이 있다.

"어떤 학습이든 너무 쉽거나, 너무 어렵게 느껴진다면 현재 자신의 위치를 다시 파악할 필요가 있다. 억지로 학습을 이어가다 흥미를 잃어버릴 수 있다는 점을 명심하자."

 

굉장히 공감한 말이다. 개발자 몇 년 차라는 껍데기에 숨겨진 현재 자신의 위치를 아는 것이 굉장히 중요하다.

 

여러분들 모두, 이 책을 보고 공부하면서 지금 내가 어느 위치에 있는지 알았으면 좋겠다.

(본인도 대충 예상은 되지만 어느 위치에 있는지 알아가 보도록 하겠다 ㅠㅠ)

 

쓰면서 익히는 알고리즘과 자료구조를 통해 스스로 발전하는 나 자신을 발견하도록 하자.

 

오늘도! 내일도! 파이팅!

+ Recent posts