이번에 만드는 다익스트라 알고리즘은 ‘그래프’와 ‘우선순위 큐(이진 힙 버전)’ 개념을 이해하고 있어야 한다.다익스트라 알고리즘은 그래프의 두 개의 정점 간에 최단 경로를 찾는 알고리즘이다. “A 포인트에서 B포인트까지 가는 가장 빠른 방법은?”다익스트라 알고리즘는 가
그래프에서 순회하는 코드를 짤 때, 루트가 있는 트리와는 달리 시작점을 정해줘야 한다.그래프의 한 노드에서 다른 노드로 갈 때 유일한 하나의 길만이 있다는 보장은 없다. 이미 방문한 노드를 다시 방문해야 할 수도 있다.그래프 순회 사용 예시P2P 네트워킹웹 크롤러최단
이전에 살펴본 트리는 그래프의 일종이다. 그래프는 트리를 포괄하는 개념이다.그래프를 코딩하는 방법은 여러 가지가 있으나, 인접 리스트(Adjacency List) 를 사용하여 그래프를 만들어본다.그래프는 유한한(가변적인) 꼭지점(노드)들의 집합으로 구성된 데이터 구조다
목표해시 알고리즘에 대한 정의좋은 해시 알고리즘을 만드는 방법해시 테이블에서 충돌이 발생하는 경우 이해개별 체이닝(separte chaining)과 선형 조사법(linear probing)을 이용한 충돌 해결해시 테이블이란해시 테이블은 key-value 쌍을 저장하는
일단 힙(Heap)이라는 단어가 매우 생소하므로, 이에 대하여 익숙해질 필요가 있다. Heap의 사전적 의미는 무엇인가 차곡차곡 쌓여있는 더미를 의미한다. 건초 더미, 모래 더미, 산 더미처럼 말이다. 이를 통해, 자료 구조에서 힙(Heap)은 모래 더미처럼 삼각형으로
트리 순회(Tree traversal) 트리의 모든 노드를 순회하는 2가지 방법(이진검색트리뿐만 아니라 트리 전반에 대한 방법) Breadth-frist Search(BFS, 너비우선탐색) Depth-first Seacrh(DFS, 깊이우선탐색) 본 포
트리는 parent , child 관계를 지닌 노드들로 구성된 자료구조다.노드들로 구성됐다는 점에서 연결리스트와 비슷하다.하지만 리스트는 일렬로 쭉 이어지는 선형(linear) 구조인 반면에,트리는 여러 갈래로 뻗을 수 있는 비선형(nonlinear) 구조이다.어떻게
스택은 LIFO(Last In Fisrt Out, 후입선출) 자료구조이다. 스택에서는 마지막으로 추가된 요소가 제일 먼저 제거된다.배열에서 push 메서드와 pop 메서드를 사용하여 스택 자료구조를 만들 수 있다.또는 별도의 클래스로 자신만의 스택 자료구조를 만들 수도
이중 연결 리스트는 앞에서 살펴본 단일 연결 리스트에서 이전의 노드를 가리키는 포인터를 하나 더하는 것 뿐이다. 그러니까 각각의 노드에 포인터 가 두 개씩 있게 된다.이중 연결 리스트는 이처럼 반대 방향 포인터도 갖게 되어 성능상 유연함을 갖게 됐지만, 더 많은 메모리
단일 연결 리스트는 head , tail , length 프로퍼티들을 포함한 자료구조다.단일 연결 리스트는 node 들로 구성되어 있으며, 각각의 node 는 value 와 다른 노드나 null을 향한 pointer 를 갖고 있다.마치 다음 열차와 연결되어 있는 기차와
What is recursion?재귀란 자기자신(함수)을 호출하는 과정이다. A process (a function in our case) that calls itself왜 알아야 하는가?어디에나 있기 때문이다.JSON.parse / JSON.stringify브라우저
스택은 가장 윗부분에서만 자료의 추가와 삭제가 일어나므로 실행속도가 빠르고 구현이 쉬운 효율적인 자료구조다.스택은 요소 리스트로 구성되며 탑(top)이라 불리는 리스트의 한쪽 끝으로만 요소에 접근할 수 있다.스택은 후입선출(last in, first out, LIFO)
문자열 키와 문자열 값을 저장하는 해시맵 라이브러리를 구현한다.고유한 Hash 함수를 정한다.put(String key, String value) 키-값을 추가한다.remove(String key) 해당 키에 있는 값을 삭제한다.containsKey(String) 해당