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

최근 개발자 채용이 늘어나면서 덩달아 많은 관심을 받게된 컴퓨터 과학의 한 갈래는 단연 자료구조와 알고리즘일 것이다. 대부분의 기업에서 코딩 테스트를 여러가지 목적으로 필수적으로 진행하고 있기 때문에 테스트에서 활용하는 자료구조와 알고리즘은 취업 준비생 또는 이직을 준비하는 사람들에게 필수불가결한 내용이 되었다.
단순히 자료구조와 알고리즘에 대해서 다루는 것이 아니라 아예 코딩테스트를 타겟으로 출판된 책들도 다수 있다. 그러면 기존에 출판된 코딩테스트 대비 또는 자료구조/알고리즘 책과 본 도서의 차이는 무엇일까? 책에서 다루는 주제는 기존의 출판된 책들과 크게 다르지 않거나 오히려 책의 두께가 얇은 편이므로 일부 빠지는 내용도 있는 것으로 보인다. 물론 자주 출제되는 유형은 대부분 다루고 있으므로 그 부분에 대한 걱정은 하지 않아도 될 것이다. 가장 눈에 띄는 차이점은 아래와 같은 프로세스를 통해서 코딩 문제를 해결하는 루틴을 형성할 수 있다는 점이 이 책의 가장 큰 특장점이라고 생각된다.
프로그래밍을 하는 사람 중 일부는 종종 생각도 하기 전에 코드를 쓰려는 나쁜 습관이 있다 (내 얘기다). 이것은 굉장히 나쁜 습관이며 프로그래밍은 생각과 고민을 굉장히 많이하고 작성하기 시작해야한다. 알고리즘 문제 풀이는 서비스 코드에 비해서 단편적인 코드 작성을 하는 경우가 많으므로 이런 연습을 하기에는 최적의 조건으로 볼 수 있다. 특히 생각없이 문제를 푸는 경우 문제를 본다 -> 코딩을 한다 -> 채점을 하고 나서 시간/공간 복잡도를 생각해본다의 순서인데 책에서는 이것을 제한사항을 생각하고 시간/공간 복잡도를 고려해서 아이디어를 도출 후 코드를 작성하고 마지막으로 테스트까지 해보는 구조화된 루틴을 제공하고 있다.

문제의 제한사항은 매우매우 중요한 조건이지만 문제 풀이자들이 가끔 놓치는 경우가 많다. 특히 Integer의 범위 조건이나 정렬의 유무 등은 문제 풀이를 진행함에 있어서 매우 치명적으로 작용하는 경우가 있기 때문에 항상 미리 잘 정리 후 문제 풀이를 하는 것이 중요하다. 책에서는 해당 부분을 가장 먼저 진행하고 아이디어 도출을 시작한다

예제의 문제는 브루트 포스하게 푸는 아이디어로 충분히 해결가능하므로 다른 아이디어는 없지만 같은 문제라도 여러 가지 접근 방법이 가능할 수 있기 때문에 시간/공간 복잡도를 고려하여 사전에 문제 풀이를 설계하는 과정을 거치게된다

문제 풀이 설계 이후 그 때서야 비로소 코드를 작성한다. 코드는 사실 아이디어를 그저 옮기는 것이므로 앞에서 고민과 생각을 많이하고나면 크게 어렵지 않게 옮길 수 있을 것이다 (물론 코드 작성을 위한 언어의 문법 기본을 알고 있어야한다)

마지막으로 엣지 케이스를 놓치는 지 아닌 지에 대해서 테스트 케이스를 검토하며 루틴을 마치게된다.
우선 책이 그렇게 두껍지 않다. 자료구조/알고리즘 개론서는 두꺼운 경우가 많아 부담스러울 때가 있는데 그런 부분을 덜었다고 본다. 두껍지는 않지만 빈출되는 내용은 거의다 커버하고 있다. 특히 각 유형별로 비슷한 유형의 리트코드 등의 문제풀이 사이트들도 제공하므로 충분한 연습을 할 수 있을 것이다. 급하게 코딩 테스트나 이직 준비를 하는 사람들에게 간지러운 부분을 해결해줄 수 있는 책이라고 생각한다.
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다
댓글
이 글 공유하기
다른 글
-
[서평] 리눅스 입문자를 위한 명령어 사전
[서평] 리눅스 입문자를 위한 명령어 사전
2021.08.22대부분의 컴퓨터 사용자들이 GUI 환경에 익숙해져있는 2021년이지만, 소프트웨어 엔지니어는 여전히 까만 바탕의 Terminal 환경에서 작업할 일이 많다. 주기적인 배치 작업을 위한 Crontab이나 심볼릭 링크 등 사전에 알고 있었다면 일의 효율성이 높아지는 유용한 명령어들이 다수 존재한다. 이 책은 그런 유용한 명령어들을 말 그대로 사전식으로 정리해놓은 책이다. 책 내용 자체는 아주 기본적인 명령어부터 생각보다 고급 명령어 (나도 처음 보는 명령어들도 꽤 있었다)까지 망라하고 있으며, 단순히 사전식 나열이 아니라 필요하다면 운영체제 개념 (프로세스, 스레드 등)도 짤막하게 같이 소개하고 있는 점은 독자들이 기본 개념을 리마인드하기에 아주 적합한 구성으로 보인다 다만, 책의 두께가 생각보다 두꺼운 편… -
[서평] 파이썬으로 살펴보는 아키텍처 패턴
[서평] 파이썬으로 살펴보는 아키텍처 패턴
2021.06.20한국에서의 Back-end 개발은 타국가와 다르게 Spring 프레임워크에 굉장히 의존적인 것이 특이사항이라고 볼 수 있다. 전자정부프레임워크를 위시한 Java Spring 기반의 엔지니어가 2000년대 초반부터 많았기 때문에 유지보수도 용이하고 성능 측면에서도 나쁘지 않은 Spring 프레임워크가 대세가 될 수 밖에 없었다고 생각한다. 당연히 그에 대한 영향으로 각종 기술서적 역시 Java와 Spring 기반으로 한 책들이 많을 수 밖에 없었다. 위 책의 아키텍처나 TDD, DDD와 같은 책도 현재 한국에서 출간된 서적 중 많은 비율은 Java와 Spring을 대상으로 설명하고 있다. 그러나 2021년 기준, 스타트업처럼 빠르게 프로덕트를 만들어야하거나 규모가 있는 회사에서도 린하게 움직이기 위해 Sp… -
[서평] 친절한 딥러닝 수학
[서평] 친절한 딥러닝 수학
2021.04.18이전 서평에서 잠깐 언급했었지만, Python 언어의 인기 상승에는 Deep Learning의 유행이 크게 기여했다고 생각한다. 유행에 따라 많은 소프트웨어 개발자와 학생들이 Deep Learning 공부에 시간을 투자하기 시작했고, 가장 처음 어려움을 맞이하는 부분이 '수학'이었을 것이다. 분명히 세부적인 벡터의 내적, 합성함수의 미분 등은 고등학교 또는 대학교에서 어렴풋이나마 배우고 지나갔을 텐데, 이것을 엮어서 Deep Learning이 학습하는 과정을 '수식'으로 압축해서 설명하면서 어려움을 겪었던 경험은 나를 포함해서 다들 있었을 것이라고 본다. 이런 어려움으로 인해서 수학적 이해 없이 단순히 TensorFlow, PyTorch 같은 라이브러리를 단순 사용하게 된다면 내가 풀고자 하는 도메인의 … -
[서평] 진지한 파이썬
[서평] 진지한 파이썬
2021.02.212021년 기준 파이선은 가장 인기 있는 입문자용 프로그래밍 언어라고 할 수 있다. 간결한 문법 체계와 풍부한 표준 내장 라이브러리, 그리고 커뮤니티는 프로그래밍에 익숙하지 않은 사람이라도 빠르게 애플리케이션이나 서비스를 구현할 수 있을 정도이다. 특히 TensorFlow를 위시한 Deep Learning의 인기와 취업 준비생의 코딩 테스트에서의 파이선 선택자의 좋은 성적이 여러 파이선 입문서, Deep Learning, 그리고 코딩 테스트를 다루는 서적의 출간에 많은 영향을 줬다고 생각한다. 이 책은 위와 같은 인기와는 조금 다르게 어떻게 파이선 기반의 'Product'를 더 잘 만들 수 있을지에 대해서 다루고 있는 책이라고 생각한다. 이러한 유형의 도서 중 하나는 Effective Python인데 해…
댓글을 사용할 수 없습니다.