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

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

 

윤대석 지음

 

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

 

벌써, 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