회사에서 일하면서 TAC Time이 굉장히 중요하다는 사실을 알고 어떤 공부가 도움이 될까 생각했을때, 알고리즘과 자료구조 공부가 도움이 된다고 생각해 리뷰이벤트를 신청했고, 당첨돼 받은 책입니다.
출장에서 돌아와 주말동안 읽어봤습니다.
이 책을 읽기위해서 필요한 기술
- 중등수학 -> 딱히 수학에대한 지식을 요구하지는 않지만, 대부분 기호로 풀이하기에 수학책을 많이 본사람이 아니면 이해하기 어렵다고 생각한다.
- C++ -> 코드를 이해하고 예제를 바로 실행 가능한 수준
- Python -> 코드를 이해하고 예제를 바로 실행 가능한 수준
- 시간 복잡도에 계산 방식에 대한 이해 -> 책에서 시간 복잡도가 뭔지는 알려주지만 뜬금없이 연습문제로 구해보자! 시키기 때문에 우선 아래의 글을 보고 이해한다음 책을 보는게 도움이 될 것 같다.
배운점
시간복잡도 계산법
시간복잡도를 연습문제를 풀며 동료한테 물어봤는데 이런 대답을 들었다.
시간복잡도를 한번에 구하기 어려우면,
우선 코드를 대략 짠다음. for문을 줄여나가는 방식으로 시간복잡도를 맞춰나가 보는것도 좋다.
용어 정리
시간복잡도 : 이 알고리즘이 작동하는데 시간이 어느정도가 걸릴것인가를 판단하는 척도.
-> 많은 데이터를 다루는 일이 많기 때문에 대부분은 고차항의 함수를 복잡도로 삼는다.
탐욕법 : 선택 과정에서 나중을 생각하지 않고 바로 다음 단계에서 가장 좋은 선택을 하는 방법.
-> 최적의 해를 구하는것이 실제로는 쉽지 않기 때문에 탐욕법을 사용해 근접한 해를 구해보면 좋다.
후기
- 시간복잡도 파트는 굉장히 다양한 기법과 그에 맞는 시간복잡도를 구하는 연습문제를 토대로 이 상황에서는 어떤 알고리즘을 사용하는것이 도움이 되는지 확 마음에 와닿습니다.
평소 알고리즘을 공부할때 이걸..어디에 쓴다는걸까? 했던 궁금증이 많이 해결되고, 시간복잡도를 계속 구해봐야하기 떄문에 이해도가 높아집니다.
- 자료구조 파트는 일반적인으로 자료구조에 대한 설명과 그 자료구조에 대한 시간복잡도, 그리고 그 자료구조를 사용해 정렬과 탐색까지 진행됩니다.
자료구조는 입문자도 쉽게 알아볼 수 있게 되어있고, 시간복잡도를 계산해야하는 중급자도 보기 좋게 되어있습니다.
- 알고리즘 파트는 그동안 배운 시간복잡도와 자료구조를 토대로 정렬과 탐색 등 알고리즘을 학습할수 있습니다.
이 책에서 좋았던점은 수학을 잘 몰라도 프로그래밍이 가능하면 수학적인 내용을 sudo코드가 아닌 C++로 해석하고 예제를 실행해가면서 이해 할 수 있는 부분과 그림으로 설명이 나름 잘되어있어 2~3번 씩 다시읽으면 많은 부분 도움이 된다는 점입니다.
그러나 수학책 같은느낌을 지울수는 없기에 읽기에 많은 어려움을 느꼈고, 연습문제는 풀이나 답이 나와있지않아 완전 처음 접해보는 사람에게는 난이도가 좀 있습니다.
-> 수학에 관해 증명하거나 그런부분은 없기때문에 그냥 수식이라면 치를 떠는 사람이 여러번 정독해 수학책을 읽는 연습을 하기에도 좋아보입니다.
총평
시간복잡도와 알고리즘이 중점인 책이며,
자료구조를 토대로 이 알고리즘이 어디에 쓰이는지 보고싶은 중급자에게 추천하는 책입니다.
프로그래밍을 할줄알지만 수학을 포기해 수식들만 보면 치를 떠는사람이 알고리즘을 통해 수식과 친해지기에도 좋아보입니다.
* 이 글은 길벗출판사에게서 제품을 협찬받아 작성되었습니다.
'리뷰&후기 > 개발자가되고싶다면' 카테고리의 다른 글
[강의 후기] 리팩터링 구루 - 리팩터링 코스 (0) | 2023.07.01 |
---|---|
[책 후기] 리팩터링(Refactoring) - 마틴 파울러 (2) | 2023.06.10 |
[책 후기] C#을 다루는 기술(C# In Depth) - 존 스킷 (0) | 2023.05.29 |
[책 후기] 커리어 스킬 - 존 손메즈 (0) | 2022.11.11 |
[프로그래밍] Clean Architecture(클린 아키텍처) 후기 (0) | 2022.02.01 |
3년차 WPF 개발자입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!