IT기업의 개발자로 취업을 하려면 통과해야하는 관문 중 하나가 바로 코딩테스트 이다.
주로 코딩테스트는 자료구조, 알고리즘에 대한 기본적인 이해를 평가하기 위한 지표로 사용된다.
그만큼 알고리즘과 자료구조가 중요하다는 의미인데, 과거의 나를 떠올려보면 부끄럽게도 코딩하면서 알고리즘을 생각해본적은 없었다. 그러던 중 취업을 위해 채용공고들을 찾아보던 중 대부분의 회사에서 코딩테스트를 채용 과정의 일부로 사용하고 있다는 것을 알게되었다. 부랴부랴 자료구조 강의를 결제해서 듣기 시작했지만, 단순히 취업을 위한 공부라 재밌지도 않았고 강의는 들어놓고 문제에 손도 못대는 경우가 허다했다.
이렇게 어려운 알고리즘 공부는 대체 왜 해야하며 어떻게 해야 효과적일까??!!!!
매일 문제를 풀면서 들었던 이 질문에 대한 해답을 주는 책을 소개한다.
실제 개발자로 취업을 하게되면 현실세계의 문제들을 해결해야한다. 이럴때 알고리즘에 대한 기본 지식은 빛을 발하는데, 현실 문제에 대한 대략적인 접근방법뿐만 아니라 어떤 알고리즘과 어떤 자료구조를 사용해야할지 고민하게 되는 습관도 기를 수 있으며 동료의 코드를 리뷰해줄 때 더 좋은 제안을 할 수 있다는 것이다.
즉, 알고리즘에 대한 공부는 현실 문제들을 잘 헤쳐나갈 수 있는 방법을 찾게 해주는 열쇠같은 것이다.
운동으로 따지자면 모든 운동의 기초가 되는 근력운동이고, 요리로 따지자면 요리를 하려면 불을 다룰 줄 알아야하고 칼질을 할 수 있어야하는 것처럼 말이다.
(올바른 비유인지는 모르겠음..)
나는 자료구조와 알고리즘에 대한 강의도 수강해보고 책도 사서 읽어보고 했는데 이 책은 조금 색다른 방법으로 진행이 된다. 바로 노트 레이아웃을 이용한 문제풀이 접근 방법이다. 책 제목처럼 이 책은 직접 알고리즘 설계 캔버스(Algorithm Design Canvas)를 채워가면서 문제를 해결해나간다.
나는 이방법이 굉장히 마음에 들었다. 코딩테스트를 보다보면 이 문제에 어떤 알고리즘을 써야하는지 아이디어가 떠오르지 않아 난감했던 적이 많았는데 이렇게 손으로 적어두면 한 눈에 볼 수 있으니까 너무 좋다고 생각했다. 또 코드를 짜다가 '내가 지금 이걸 왜하고 있었더라?' 싶어서 다시 처음으로 돌아가지 않아도 되니까 시간낭비를 줄일 수 있었다.
책의 순서는 배열 / 문자열 / 연결리스트 / 스택과 재귀 / 큐 / 트리 / 동적 프로그래밍 / 정렬 순으로 이루어져 있다.
가장 중요한 자료구조들을 제대로 공부할 수 있다.
책의 구성은 일단 자료구조에 대한 기본적인 개념을 설명해준다. 스택이면 스택, 배열이면 배열에 대한 전반적인 지식을 소개해준다. 그림도 있어서 이해하기 쉽다. 파이썬을 다룰 줄 알지만 자료구조를 잘 모르는 사람들도 이해할 수 있도록 개념 설명이 매우 자세하다고 느꼈다.
기본적인 개념설명 이후 직접 파이썬으로 구현을 해본다.
이 책은 파이썬으로 진행되는 언어이므로 모든 자료구조들은 파이썬으로 구현된다.
구현 후 알고리즘 설계 캔버스 예시도 같이 보여준다.
코드에 대한 자세한 설명이 필요한 경우, 코드를 한 줄 한 줄 뜯어서 어떤 값이 리턴되는지, 어떻게 값들이 바뀌는지 알려준다. 코드에 대한 설명도 꽤 자세한 편이다. 설명과는 논외로 어려운 개념은 아무리 쉽게 설명해줘도 어렵다;;
자료구조에 대한 구현까지 끝나면 연습문제가 3-4개 정도 주어진다. 문제를 풀면서 개념을 소화하라는 차원에서 문제가 주어지는데 나의 경우 아직 알고리즘 초심자라 그런지 문제를 푸는데 오랜 시간이 걸렸다.
책으로 공부해보면서 알고리즘을 막 시작한 나에게 부담스럽거나 난이도가 너무 높지 않았다.
언어가 파이썬이라 익숙하기도 했고, 알고리즘 설계 캔버스로 구현해보니까 기억도 잘나고 복습하기에도 용이했다.
책의 두께도 385페이지로 별로 두껍지 않고 들고다니는데 무리가 없다.!
이 책으로 공부하고 알고리즘 사이트에서 문제 풀어보면서 코딩테스트 준비하면 지금보다 자신감이 좀 생기지 않을까 싶다.
오랜만에 정말 괜찮은 책을 찾은 것 같아서 기분이 좋다 :)
책에 대한 전체적인 나의 평을 요약해보면
1. 알고리즘, 자료구조를 처음 배운다. -> 산다.
2. 알고리즘, 자료구조를 제대로 배우고 싶다. -> 산다.
3. 알고리즘, 자료구조를 이미 알고있고, 코테 합격을 바라보고 있다. -> 안산다.
4. 파이썬 배운지 얼마 안됐다. -> 안산다.
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
'Study > Review' 카테고리의 다른 글
[한빛미디어/리뷰] 처음 배우는 딥러닝 챗봇 (0) | 2021.10.24 |
---|---|
[한빛미디어/리뷰] 업무에 바로 쓰는 SQL 튜닝 (0) | 2021.07.25 |
[Review/서평] Do it! 반응형 웹 페이지 만들기 후기 (0) | 2021.04.09 |
[한빛미디어/나는리뷰어다] 이것이 우분투 리눅스다 (0) | 2020.12.20 |
[한빛미디어/나는리뷰어다] 한 권으로 끝내는 딥러닝 텐서플로 (0) | 2020.11.22 |