본문 바로가기
도서 리뷰/컴퓨터,프로그래밍

[알고리즘] 쓰면서 익히는 알고리즘과 자료구조 - 윤대석

by 핸디(Handy) 2021. 5. 18.

[ 선택 이유 ] 

최근들어 친구 몇명과 함께 코딩테스트 스터디를 시작했다. 일주일에 2문제씩만 꾸준히 풀어나가는게 목표였다. 다행이 2달동안 진행하며 코테에 어느정도 익숙해졌고 이젠 점점 어려운 문제에 도전해나가고 있다. 

학부시절에 알고리즘 수업을 들었고 여기저기서 다양한 알고리즘과 이론등에 배웠지만 이를 실전에 써보는건 만만찮은 일이었고 다시 공부할 필요성이 느끼고 있었다. 이런 와중에 의도에 딱맞는 책이 있어 신청하게 되었다.

다만 나는 프론트엔드 개발자이지만 해당 책은 파이썬으로 구성되어있다. 다행스럽게도 파이썬 코드를 읽을줄 알고 최근 업무에도 파이썬관련 업무가 들어와 이제 슬슬 익숙해져있을 때이기에 기분좋게 읽을 수 있었다.

[ 본문 ] 

이 책은 코딩 테스트를 시작하는 사람 or 코딩 테스트에 체계가 필요한 사람에게 추천할 만한 책이다.

나는 코딩 테스트에 체계가 필요했던 사람에 속해있었다. 

전체적인 내용은 어렵진 않았으며 특히 각각의 알고리즘에 따라 설명이 전개되어있지않고

배열 ->문자열 -> 스택,재귀 ->큐 -> 트리 -> DP -> 정렬 순으로 확장하며 내용이 진행된다.

모든 자료구조의 기초인 배열부터 마지막 정렬까지 전부다 익히게 된다면 왠만한 코딩테스트는 어렵지 않으리라 생각한다.

하지만 전부다 익히는 것도 적재적소에 활용하는 것은 또다른 문제이다. 

저자는 이에 대한 해결책으로 알고리즘 설계 캔버스를 제안한다.

알고리즘 설계 캔버스는 아이디어, 복잡도, 코드, 테스트로 이루어진 테이블로 기존에 문제만 보면 풀기 급급했던 잘못된 습관을 고쳐주고 아이디어부터 차근차근 생각해가며 문제를 풀어나가는 기준을 마련해준다.

실제로 코딩 테스트를 할때에 직접 설계캔버스를 그려가지 하진 않지만

이후에는 코드를 작성하기전에 상단에 주석으로 아이디어, 예상되는 시간복잡도, 테스트상황을 요약하고 풀이를 진행하게되었다. 

이런 습관을 익히고 나니 코드 중간에 헤매는 일도 적어지도 문제가 발생했을때 아이디어단에서의 문제인가, 잘못된 코드작성으로 비롯된 문제가 빠르게 파악할 수 더 큰 장점을 얻을 수 있었다.

요새 다양한 알고리즘, 코딩 테스트 관련 도서가 나오고 있다. 대부분이 문제 풀이에 대한 접근이 중점이라면

이 책은 문제를 풀어가는 과정이 중점인 희안하지만 아주 가치있는 책이다.

[ 총평 ]

난이도 : 중

'코딩 테스트를 통과하기 위해선 답보단 과정을 공부해야한다. 이 책은 그런 책이다'

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

댓글