본문 바로가기

Other Topics

누구나 자료구조와 알고리즘 도서리뷰

누구나 자료구조와 알고리즘 도서리뷰



목차

1. 자료 구조가 중요한 까닭

2. 알고리즘이 중요한 까닭

3. 빅 오 표기법

4. 빅 오로 코드 속도 올리기

5. 빅 오를 사용하거나 사용하지 않는 코드 최적화

6. 긍정적인 시나리오 최적화

7. 해시 테이블로 매우 빠른 룩업

8. 스택과 큐로 간결한 코드 생성

9. 재귀를 사용한 재귀적 반복

10. 속도를 높이는 재귀 알고리즘

11. 노드 기반 자료 구조

12. 이진 트리로 속도 향상

13. 그래프로 뭐든지 연결하기

14. 공간 제약 다루기


최근 들어 알고리즘이 굉장히 강조되기 시작했다. 

IT업계에서는 알고리즘 역량을 개발역량으로 적극적으로 활용하게됨에 따라 승진의 도구로써 혹은 이직의 도구로써 알고리즘을 공부하는 사람들이 점점 늘어나고 있으며, 특히 취업을 준비하는 대학생들은 알고리즘 테스트에 통과하기 위하여 알고리즘을 공부하기도 한다.


이러한 요구에 맞춰 우연찮게 사내에서 알고리즘 강사를 하게 되었다.

강의를 진행할 때에 많은 분들이 물어보신 것은 알고리즘을 처음 공부하는 사람은 어떤 내용부터 어떻게 공부해야하는가 였다. 그럴 때마다 나는 자료구조부터 공부하시도록 안내해드렸다. 그리고 교육을 진행할 때도 가장 먼저 자료구조부터 소개하곤 하였다. 


개발을 하는 입장에서 자료구조는 지극히 기본적이고 자유자재로 사용할 수 있어야하는 도구이다. 하지만 의외로 많은 분들이 자료구조를 충분히 이해하지 못한 상태에서 피상적으로 사용거나 더 효율적으로 사용할 수 있는 자료구조가 있음에도 이를 충분히 활용하지 못하고 있었다.


이처럼 개발을 해본 경험은 있지만 자료구조에 자신이 없는 사람들이나 지금까지 피상적으로 자료구조를 접해본 사람들에게 누구나 자료구조와 알고리즘을 소개하고 싶다. 이 책은 비교적 알고리즘을 오래 공부한 사람이 읽기에는 내용이 기본적이고 쉽게 느껴질 수 있다. 하지만 언제 어디서든 기본은 중요한 법이고, 이 책은 기본을 잡아주는 책이다. 경험이 충분하지 않은 사람들에게는 자료구조와 알고리즘의 확장이라는 지식을 제공하고 어느 정도 개발 경력이 있고 알고리즘을 공부해왔던 사람들에게는 기본을 탄탄하게 하는 기회를 제공할 것이다.


우선 누구나 자료구조와 알고리즘은 다양한 자료구조를 꼼꼼하게 소개하는 동시에 sudo 코드에 가깝게 표현되는 python이나 ruby 등의 언어나 범용적으로 많이 사용되는 javascript를 이용하여 자료구조를 구현한 코드를 제공한다. 대부분의 알고리즘 도서들의 코드가 c언어나 c++로 제공되었던 것에 비교하면 파격적이다. 덕분에 개발을 오래하지 않은 사람들이라고 하더라도 편하게 코드를 읽을 수 있다. 


또한 책에서는 앞부분에서 빅 오 표기법을 이용한 시간복잡도 계산에 대해서 설명한 뒤 자료구조 및 알고리즘을 소개하면서 빅오 표기법으로 표기된 시간복잡도를 제공한다. 시간복잡도에 익숙해질 수 있도록 꾸준히 연습하고 개념을 주입하는 것으로 보인다. 시간복잡도를 모른다면 알고리즘 문제를 구현하고도 시간초과가 나거나 잘못된 방식으로 문제를 해결하려고 접근할 수 있다. 그렇기 때문에 누구나 자료구조와 알고리즘에서는 시간복잡도와 공간복잡도를 충분히 학습할 수 있도록 정보를 제공한다.


알고리즘 초심자라면 이와같은 기본에 충실한 내용을 통해 알고리즘을 기분좋게 시작할 수 있을 것이다. 알고리즘의 기초를 탄탄하게 그리고 더 복잡한 알고리즘을 구현하기 위한 초석을 놓고자 하는 사람이라면 누구나 자료구조와 알고리즘은 학습의 좋은 시작이 되어줄 것이다.



누구나 자료 구조와 알고리즘