IM: DAY 12
IM 코스 2주차 과정이 끝났다. 자료구조와 알고리즘에 대해 배우기 시작했다. 그동안 알고리즘 문제를 풀면서 답답했던 부분을 채울 수 있을테니 개운하겠다고 생각했는데, 그 생각이 반은 맞고 반은 틀렸다.
🧐 확실히 개념을 아니까 전에 읽었던 글들을 다시 봤을 때 이해하는 정도가 달라졌다. 아는만큼 보인다는 말이 이래서 나왔구나 싶었다.
🤯 어제 오늘 이틀동안 BackTracking과 혈투를 벌이고 있다. 개념을 이해하고나서 코드로 적용하는 것이 이렇게 어려웠던 적이 처음이라서 너무 답답하다. 그래도 많은 동기분들에게 설명을 듣다보니 어제보다는 이해도가 훨씬 높아졌다고 생각한다. 이번 주말을 이용해서 코드를 짤 때 자유롭게 사용할 수 있는 수준까지 만들어놓자.
(낑낑대는 저에게 열과 성을 다해 반복해서 설명해주셨던 동기님들 진심으로 감사합니다💓)
오늘 한 일
- Graph 학습
- Tree Search Algorithm 학습
- Coplit - Graph, Tree, BST 알고리즘 문제 풀기
- BFS, DFS, BackTracking 공부 🤯
기억할 것
new Array(n)
관련
Array(n).fill(Array(m).fill(0))
사용시 주의
Array(m).fill(0)은 동일한 배열. 하나가 바뀌면 싹 바뀜. 각기 다르게 사용하고 싶다면 반복문으로 따로 추가해줘야 함.
Array(n)
vs. new Array(n)
Array(n)
는 전역 메서드를 사용하는 방식이고, new Array(n)
는 Array 클래스의 인스턴스를 만들어서 사용하는 방식이다. 자바스크립트에서는 브라켓을 사용해 배열을 만드는 방식이 가장 바람직하지만, 경우에 따라 사용해야 한다면 new
키워드를 사용하는 것이 좋다.
new Array(n)
를 사용할 땐 fill
메서드와 함께 사용하는 것이 좋다.
fill 메서드를 적용하지 않은 상태로 만들어지면 인덱스로 불러올 땐 undefined가 나오지만 실제로는 empty 상태로 만들어지는 거라서 map과 같은 고차함수를 사용할 때 에러가 발생한다.
자료구조(알고리즘) 관련
- 정점(노드)의 개수가 1000만개가 넘는다면 인접행렬로 접근해선 안된다.(데이터 규모가 너무 큼)
- 1000바이트 = 1K
- 1000K = 1M
- 1000M = 1G
- 자바스크립트 primitive type data 크기는 8바이트라고 생각하면 된다.
- 트리는 그래프의 일종이다.
트리에는 그래프에는 없는 '계층' 개념이 있다.
알고리즘에서 보게 될 트리는 이진트리, 힙(heap) 딱 두개 뿐이다.
- 이진트리를 구현하라는 것보다는 이진검색(이분탐색)을 요구하는 문제가 많이 나온다.
- 힙(Heap)과 우선순위 큐는 같은 개념이다.
더 공부할 것
- BFS, DFS, BackTracking 정복하기
- 힙(Heap)
내일 할 일
- Subclass Dance Party Sprint 제출 용량 문제 해결하기
- 졸업 논문 계획서 작성하기 / 제출하기
- IM 코스 Achievement Goals 싹 정리해보기