<지레 겁먹었던 알고리즘에 대한 오해를 풀어준 책>

취업준비를 처음 준비했을 당시에
코딩 테스트는 아예 거들떠도 보지 않았다(통과할 자신이 없었다)
코딩 테스트를 보지 않는 회사들만 지원해서 경력을 우선적으로 쌓자는 생각을 했었다
하지만 인프런 한정수 강사님의 [비전공자 개발자 취업] 강의를 듣고 생각이 바뀌게 되었다
강의에서 강사님께서는 스타트하는 회사의 중요성에 대해 설명해주셨고
(소위 말하는 좋은 환경의 회사들은 코딩 테스트가 있다)
대충 취업한 사람과 최선을 다해 첫 직장을 가진 사람과의
점진적으로의 커리어와 점층적으로의 연봉에 대한 차이가 많이 나는 것을 친절하게 그래프로 설명해주셨다
그것을 보았을 때
코딩테스트를 치러보지도 않고 나와는 별개다 라고 생각했던 나 자신에 대해서
처음 이 개발자로의 길에 들어섰을 때의 나의 다짐이 부끄러워졌다
그래서 이 책을 접하게 되었다
결과적으로는 대만족!
책이 정말 이해하기 쉽게 설명이 되어 있었고, 특히 어려운 알고리즘들을 코드로만 표현하는 것이 아닌
일차적으로 그림 예시를 통해 ('이런 예시가 있을 때는 먼저 이런 그림을 떠올려봐라')
단계적으로 어떻게 설계하고 풀어나가야 하는지 책에 서술되어 있었다
물론 책 안에서 모든 알고리즘을 다 설명해주지 못하는 것은 당연한 사실이었고,
정확한 코드 또한 모든 알고리즘에 첨부되어 있진 않지만
적어도 이 책을 읽었을 때 알고리즘이 '내가 겁먹을 만큼 높은 장벽은 아니구나'라는 깨달음을 주었다
책에서 얻은 알고리즘들의 이론을 바탕으로 이제는 강의와 알고리즘 문제 푸는 플랫폼을 이용해서
실제 코드를 경험해봐야겠다는 생각이 들었다
[ 책에서 밑줄 친 부분 ]
- 알고리즘의 속도는 시간이 아니라 연산 횟수가 어떻게 증가하는지로 측정한다 (빅오 표기법)
- 이진 탐색(0(log n))은 단순 탐색(0(n))보다 빠르고, 리스트의 원소의 개수가 증가하면 상대적으로 더 빨라진다
- 배열은 모든 항목을 이웃하는 위치에 저장하여 읽기가 빠르고, 배열의 모든 원소는 같은 자료형이어야 한다
- 리스트는 모든 항목이 흩어지지만, 각 항목은 다음 항목의 주소를 저장하고 있으며 삽입과 삭제가 빠르다
- 재귀 함수는 스스로를 호출하는 것인데, 기본 단계와 재귀 단계 두 부분으로 나누어져 있다
- 스택에는 푸시와 팝이라는 두 가지 연산이 있다
- 해시 테이블의 장점 : 중복 제거 / 서버에 작업시키지 않고 자료 캐싱 / 관계 모형화
- 큐는 선입선출 / 스택은 후입 선출
- 탐색 목록은 추가된 순서대로 확인해야 하기 때문에 큐가 되어야 한다
- 너비 우선 탐색은 가중치가 없는 균일 그래프에서 최단 경로를 계산하는 데 사용한다
- 다익스트라 알고리즘은 가중 그래프에서 최단 거리를 계산하는 데 사용하는데, 모든 가중치가 양수일 때만 정상 작동한다
- 탐욕 알고리즘은 전역 최적화를 목표로 하지만, 실제로는 국소 최적화를 한다
- NP-완전 문제는 근사 알고리즘을 쓰는 것이 최선이다
- 동적 프로그래밍은 큰 문제를 작은 하위 문제로 나누어 푸는 방법이며 풀 때 격자를 사용한다
- 이때 격자의 각 칸은 하위 문제를 뜻하므로 원래의 문제를 어떻게 하위 문제로 나눌 수 있는지 생각해야 한다
- KNN은 k개의 가장 가까운 이웃 데이터를 이용하여 분류와 회구 분석을 할 수 있다
- 분류 = 그룹으로 나누는 작업 / 회귀 = 숫자로 된 반응을 예측
'Other efforts > Books' 카테고리의 다른 글
[학교에서 알려주지 않는 17가지 실무 개발 기술] - 이기곤 (0) | 2021.09.23 |
---|---|
[그림으로 배우는 서버 구조] - 니시무라 야스히로 (0) | 2021.08.30 |
[프로그래머의 길, 멘토에게 묻다] - 데이브 후버, 애디웨일 오시나이 (0) | 2021.08.17 |
[비전공자를 위한 이해할 수 있는 IT 지식] - 최원영 (0) | 2021.08.09 |
[점프 투 장고] - 박응용 (0) | 2021.08.01 |