본문 바로가기
review/DEV

책 리뷰 : 쓰면서 익히는 알고리즘과 자료구조

by ㅇㄱㅈㄱ 2024. 3. 28.
728x90
반응형

[한빛미디어에서 제공 받은 '나는 리뷰어다' 2021년 5월 이벤트 도서 리뷰입니다]


알고리즘! 하면 뭐가 떠오르시나요?

저는 '어렵다'가 가장 먼저 떠오릅니다.

 

어려운 이유중에 두가지를 꼽자면...

마치 '어려운 수학' 같아 응용력을 사용해 기본 이론에서 정답으로 가는 길을 펼쳐야 하는것과

문제로 다다르기 위해 거쳐야 하는 과정이 너무나 많다는 것입니다.

 

지금까진 '실전에서는 잘 안쓰였다' 라는 핑계로

대충 하거나 나중에 한다고 미룰 수 있었지만

'데이터 분석' 분야가 중요해지면서

'정교'하고 '정확'함을 요구하는 일이 많아졌습니다.

 

왜이렇게 장황하게 얘기하고 있냐구요?

저도 데이터 분석을 하고 싶어서 계속 두드리는 분야기 때문이죠...

오늘은 따끈따끈한 알고리즘과 자료구조를 배울 수 있는 한빛미디어의 신작을 소개할까 합니다.

 

쓰면서 익히는 알고리즘과 자료구조


- 쓰면서 익힌다?

 

 '지은이의 말'에 보면 시간이 많이 소요되지만 다른 사람들의 풀이법을 이해가 될 때까지 확인하며 다양한 방법을 익히고 그 다양한 방법들로 문제를 해결하는 과정에 성취감을 느꼈다고 한다.

 

 사실 처음에 '쓰면서 익힌다'라는 제목을 봤을때는 초중고에서 수학을 배울때 처럼 공식이 무의식적으로 툭 튀어나올때까지 외우라는 말인가... 하며 실망했지만 지은이의 말을 읽고나니 이미 해결책을 알고 있는데 다른 해결책을 받아들인다는 것이 굉장히 어려운 일이겠구나 싶었고, 이걸 또 활용하기 위해 내것으로 만든다 라는 뜻이라는것을 느꼈다.

 

- 그래서 어떻게 쓰면서 익힐껀데?

 보통 대학에서 슈도코드(pseudocode, 의사코드)라는걸 활용해서 코드를 쓰고, 순서도라는걸 활용해서 그림을 그린다.

이 책에서 지은이는 'Hiredintech' 사이트에서 제공하는 알고리즘 설계 캔버스 라는 노트 레이아웃을 활용하면 실수를 줄일 수 있어서 추천하며 책에서 적극 활용한다.

좌 : 지은이가 추천하는 노트 레이아웃 설명, 중 : 글쓴이가 추천하는 노트 레이아웃 양식, 우 : 노트 레이아웃 사용 예

 

- 알고리즘, 어떻게 접근해야해?

 알고리즘 하면 빼놓을 수 없는 '복잡도'를 간단히 설명한다. 문제를 해결하는데 얼마나 최적화될 수 있는지를 설명하는 이 '복잡도' 라는 녀석은 빅 오 표기법으로 많이 나타내는데, 아래와 같이 간단한 식으로 초보자도 익힐 수 있을만큼의 쉬운 설명을 한다.

 

- 이 책의 장점을 꼽자면?

1. 정말 쉽게 설명하려고 노력한 흔적이 보인다.

 아래 사진을 보면 알겠지만 알고리즘은 반복되는 프로그램의 실행 값을 구하는 일이 많기 때문에 머리속으로만 계산한다는것은 매우 어려운 일이다. 보통 변수가 증가하거나 감소하는 수를 써가며 문제를 푸는것이 일반적인데 이를 아래처럼 그림으로 쉽게 설명함으로써 더욱 이해가 잘되게끔 한다.

2. 지은이의 말에 나온것처럼 해결책으로 가는 가장 빠른길이 아닌 다양한 길을 생각하게 만든다.

 '이 문제의 정답은 뭘까요? 정답은 A입니다.' 같은 진행방식은 수많은 문제집에서 보았다. 이 책은 '이 문제는 어떻게 접근하면 좋을까?'를 고민하게 만들어 함께 차근차근 풀어나가는 느낌을 받게 한다.

 

3. 책에서 활용되는 언어, 파이썬

 이 책에서 의사표현 코드로 사용되는 파이썬은 파이썬을 깊게 알지 못해도 변수명과 흐름을 보고 어느정도 이해할 수 있는 난이도로 표현되어 있어 언어가 그리 큰 장벽은 되지 않는다.

 

4. 이 책에 사용되는 기술명에 대한 간단명료한 설명

 한가지 예를 들어보자면 가장 첫 장의 '배열' 에 대해 구구절절 설명하는것이 아닌 '연속적인 메모리 공간에 저장된 아이템의 집합을 표현하는 자료구조' 라고 간단명료하게 정의를 내린다. 기술에 대한 입문서가 아니기 때문에 설명에 필요한 부분을 심플하게 풀어낸 것이 매력적이다. 

 

 

- 이 책의 아쉬운점을 꼽자면?

1. 아쉬운점이라기보단 아무것도 모르는 초보들에게 추전하지 않는다.

 위 장점4에서 언급한것처럼 구구절절 설명하지 않기 때문에 '프로그래밍'을 조금이라도 해본 사람들이거나 자료구조에서 사용되는 단어에 대해 어느정도 아는 사람이 최소 타겟이 되지 않을까 싶다.

 

2. 책 설명에서 나왔던 노트 레이아웃 양식을 굳이 맞출 필요가 있었을까?

 책에서 설명한 노트 레이아웃 양식을 보면 한쪽에 설명을 하면 한쪽은 사용되지 않는다(예를들어 좌측이 사용되면 우측은 비어있는 형태가 대부분).

책의 특성상 공간 활용이 어렵기 때문이라 생각되는데... 굳이 한정된 공간을 갖는 책에서 노트 양식을 맞추기 위해 노력해야 했을까 싶다. 사용 예만 보여주고 빈 공간을 좀 더 잘 활용했으면 좋았을 것 같다.

 

 

- 그래서...

 너무 어려운 세계... 알고리즘과 자료구조 역시 정답은 여러번 해보는(쓰면서 익히는) 수밖에 없을것 같다.

대기업 채용 테스트에 '최적화'가 차이를 가르는 '키'인만큼 알고리즘과 자료구조의 중요성은 날이 갈 수록 더욱 커지고 있다. 이 한권으로 뚝딱! 하는건 어렵겠지만 최소한 알고리즘을 공부하고 싶다! 라는 사람이 있다면 이 책을 추천하고 싶다.

728x90
반응형

댓글