그래프노드 Node(정점 Vertex), 간선 Edge그래프 탐색 : 하나의 노드를 시작으로 다수의 노드를 방문하는것.두 노드가 간선으로 연결되어 있다면, 두 노드는 인접하다고 표현한다.인접 행렬 Adjacency Matrix : 2차원 배열로 연결 관계 표현인접 리스트 Adjacency List : 연결 리스트로 연결 관계 표현예제 5-6. 인접 행렬자바스크립트에서 무한대 숫자를 의미하는 `Infinity`를 이용해 연결되어있지 않다고 표시한다.const INF = Infinity;const graph = [ [0,7,5], [7,0,INF], [5,INF,0]]console.log(graph);0,7,5 노드가 연결된 노드들을 표현한다. 예제 5-7. 인접 리스트[노드, 거리] 형식c..
이코테
DFS/BFS 이전에 자료구조 기초를 자바스크립트로 구현하는 방법스택, 큐삽입 push, 삭제pop 함수가 핵심적으로 사용된다.이외에도 오버플로, 언더플로를 고민해야한다오버플로 : 특정한 자료구조가 수용할 수 있는 데이터의 크기를 이미 가득 찬 상태에서 삽입 연산을 수행할때 발생언더플로 : 데이터가 들어있지 않은 상태에서 삭제 연산을 수행할때 발생 스택 Stack선입후출 구조. 출입구가 하나라고 생각하면 된다.예제 5-1const stack = [];stack.push(5);stack.push(2);stack.push(3);stack.push(7);stack.pop();stack.push(1);stach.push(4);stack.pop();console.log(stack);//[5,2,3,1]consol..
개념 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정 `피지컬`을 요구하는 문제 완전탐색 : 모든 경우의 수를 주저 없이 다 계산하는 해결방법 시뮬레이션 : 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행 ❓자바스크립트 메모리 제약 사항 일반적으로 컴퓨터는 1초에 `10억(10^8)`번 연산의 연산이 가능하다. C++이나 파이썬은 기준이 정해져 있지만, 자바스크립트는 대략 `10^7`번 정도를 기준으로 계산하라는 이야기가 있다. 공식적으로는 정의되어있지 않고, 언어 자체의 특성보다는 브라우저나 실행 환경의 성능에 따라 다를 수 있다고 한다. 정확한 "1초에 몇 번"의 연산으로는 일반적으로 표현되지 않는 대신에, 브라우저나 실행 환경에서의 실제 성능 측정을 통해 어떤 연산이 더 효율적인지 판단하는..
개념 탐욕법 현재 상황에서 지금 당장 좋은 것만 고르는 방법 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다 다익스트라 알고리즘 - 엄밀히 말하면 그리디 알고리즘으로 분류 암기가 필요 없음 해법이 정당한지 검증이 필요 그리디와 정렬 알고리즘과 짝을 이뤄 자주 출제됨 ❓문제를 만났는데 바로 문제 유형을 파악할 수 없는 경우 그리디 알고리즘을 의심하고 해법을 고민 그리디로 해결할 수 없다면 → 다이나믹 프로그래밍이나 그래프 알고리즘으로 해결할 수 있는지 고민 예제 3-1 거스름돈 const COIN_TYPES = [500,100,50,10]; let n = 1260; let cnt = 0; for(const coin of COIN_TYPES) { cnt += Math.floor(n/coin); n..