📕Algorithm/JavaScript 18

[JavaScript 알고리즘] 트리 순회

트리 탐색에는 두 가지 주요 방법이 있습니다:너비 우선 탐색 (Breadth-first Search, BFS)깊이 우선 탐색 (Depth-first Search, DFS)1. 너비 우선 탐색 (Breadth-first Search, BFS)너비 우선 탐색은 트리의 각 레벨을 순차적으로 탐색하는 방식입니다. 먼저 루트 노드를 방문한 뒤, 바로 다음 레벨의 모든 자식 노드를 차례대로 방문합니다. 이 방식은 큐(Queue) 자료구조를 사용하여 구현되며, 가까운 노드부터 먼 노드까지 방문합니다. 예를 들어, 루트 노드의 모든 자식 노드를 먼저 방문하고 그 다음 자식의 자식 노드들을 탐색하는 순서로 진행됩니다.너비 우선 탐색(BFS)을 반복적으로 수행하는 단계는 다음과 같습니다:큐(queue)와 방문한 노드 값을..

[JavaScript 알고리즘] 이진 검색 트리

- 목표트리란 무엇인가?트리와 리스트 비교트리, 이진 트리, 이진 탐색 트리의 차이점이진 검색 트리 구현 예시1. 트리란- 트리는 부모/자식 관계로 연결된 노드들로 구성된 자료 구조입니다.- 트리 용어 Root (루트): 트리의 최상위 노드.Child (자식): 루트에서 멀어질 때 다른 노드와 직접 연결된 노드.Parent (부모): 자식의 반대 개념으로, 자식을 가진 노드.Siblings (형제 노드): 같은 부모를 가진 노드들의 집합.Leaf (잎): 자식이 없는 노드.Edge (간선): 한 노드와 다른 노드를 연결하는 선. 2. 트리, 이진 트리, 이진 탐색 트리의 차이점 - 트리의 다양한 활용 분야 HTML DOM: HTML 문서의 요소들을 계층 구조로 표현하는 모델.네트워크 라우팅: 데이터를 전..

[JavaScript 알고리즘] 큐

- 목표큐 정의하기큐의 사용 사례 살펴보기큐의 기본 연산 구현하기1. 큐란?- 큐는 FIFO(First In, First Out) 구조의 자료 구조로, 먼저 들어온 데이터가 먼저 나가는 특성을 가집니다.- 줄을 서는 것과 비슷하게, 데이터가 추가되는 위치와 제거되는 위치가 고정되어 있습니다.2. 큐의 사용 사례백그라운드 작업리소스 업로드인쇄/작업 처리- 큐 구조class Node { constructor(value) { this.value = value; this.next = null; }}class Queue { constructor() { this.first = null; // 큐의 앞쪽 요소를 가리킴 this.last = null; // 큐의 뒤쪽 요소를 가리킴 ..

[JavaScript 알고리즘] 스택

- 목표스택의 정의에 대해 알아보기스택의 사용 사례를 이해하기스택의 연산 구현 살펴보기1. 스택- LIFO(후입선출 구조)- 스택에 마지막으로 추가된 요소가 스택에서 가장 먼저 제거되는 구조 2. 스택 사용사례 - 스택의 사용처함수 호출 관리실행 취소(Undo) / 다시 실행(Redo)라우팅 (history 객체가 스택처럼 사용됨)- 스택 만드는 방식배열 사용하기연결 리스트 사용하기class Node { constructor(value) { this.value = value; this.next = null; }}class Stack { constructor() { this.first = null; // 스택의 맨 위 노드 this.last = null; // 스택의 맨 아..

[JavaScript 알고리즘] 다중 연결 리스트

- 목표이중 연결 리스트(Doubly Linked List)를 구성하시오.이중 연결 리스트와 단일 연결 리스트(Singly Linked List)를 비교하고 대조하시오.이중 연결 리스트에서 기본 연산들을 구현하시오 1. 이중 연결 리스트란?단일 연결 리스트(Singly Linked Lists)와 거의 동일하지만, 이중 연결 리스트(Doubly Linked Lists)의 각 노드는 이전 노드를 가리키는 또 다른 포인터를 가지고 있습니다 class Node { constructor(val) { this.val = val; this.next = null; this.prev = null; }}class DLL { constructor() { this.head = null; thi..

[JavaScript 알고리즘] 단일 연결 리스트

- 목표Singly Linked List(단일 연결 리스트)란?Linked Lists와 Arrays 비교/대조Singly Linked List에서 삽입, 삭제, 순회 메서드 구현1. 연결리스트란?이 데이터 구조는 head(첫 번째 노드), tail(마지막 노드), 그리고 length(길이) 속성을 포함합니다.Linked Lists(연결 리스트)는 노드들로 구성되며, 각 노드는 **값(value)**과 다른 노드를 가리키는 포인터(pointer) 또는 null 값을 가지고 있습니다.// Node 클래스 정의class Node { constructor(value) { this.value = value; this.next = null; }}// Singly Linked Li..

[JavaScript 알고리즘]자료 구조

1. 데이터 구조란?- 데이터 구조는 데이터를 체계적으로 저장하고 관리하며, 그 데이터에 대해 다양한 연산을 수행할 수 있도록 설계된 방법- 각 데이터 구조는 특정 작업에 적합하도록 설계되었으며, 어떤 것은 특정 목적에 맞춰 최적화되어 있고, 배열과 같은 것은 다양한 상황에서 널리 활용될 수 있다 2. ES2015 클래스 구문 - 목표 클래스가 무엇인지 설명하라.자바스크립트가 클래스의 개념을 어떻게 구현하는지 이해하라.추상화, 캡슐화, 다형성과 같은 용어들을 정의하라.ES2015 클래스(ECMAScript 2015의 클래스)를 사용하여 데이터 구조를 구현하라.- 클래스: 일반적으로 사전에 정의된 속성 및 메소드들을 이용해 객체를 생성하기 위한 청사class Student { constructor(f..

[JavaScript 알고리즘]정렬

1. 정렬이란?- 정렬(Sorting)은 컬렉션(예: 배열) 내의 항목들을 일정한 순서에 따라 재배열하는 과정입니다.- 예시:숫자를 작은 것에서 큰 것 순서로 정렬하기이름을 알파벳 순서대로 정렬하기영화를 개봉 연도 순서대로 정렬하기영화를 수익 순서대로 정렬하기- 자바스크립트에서 정렬하는 법내장된 sort 메서드는 선택적으로 비교 함수(comparator function)를 받을 수 있습니다. 이 비교 함수를 사용하여 JavaScript가 어떻게 정렬해야 할지 지정할 수 있습니다.비교 함수는 두 요소(a와 b)를 비교하여 반환값을 기준으로 그들의 정렬 순서를 결정합니다.음수를 반환하면 a가 b보다 앞에 와야 합니다.양수를 반환하면 a가 b보다 뒤에 와야 합니다.0을 반환하면 a와 b는 정렬 기준에서 동일한..

[JavaScript 알고리즘]검색 알고리즘

- 목표탐색 알고리즘이 무엇인지 설명하라배열에서 선형 탐색을 구현하라정렬된 배열에서 이진 탐색을 구현하라순진한(naive) 문자열 탐색 알고리즘을 구현하라KMP 문자열 탐색 알고리즘을 구현하라 1. 선형검색: 주어진 배열에서 값을 검색하는 가장 간단한 방법은 배열의 모든 요소를 확인하고, 그것이 우리가 찾는 값인지 확인하는 것- 자바스크립트 내 검색 메서드: indexOf, includes, find, findIndex- 이 함수는 배열과 값을 입력으로 받습니다.- 배열을 반복하면서 현재 배열 요소가 그 값과 같은지 확인합니다.- 만약 같다면, 그 요소가 발견된 인덱스를 반환합니다.- 값을 찾지 못한 경우, -1을 반환합니다.- 복잡도 : O(n)function linearSearch(arr, num) ..

[JavaScript 알고리즘]재귀

1. 재귀란?- 자기자신을 호출하는 절차( A process (a function in our case) that calls itself) - 실제 자바스크립트에서 작동하는 재귀 JSON.parse / JSON.stringifydocument.getElementById and DOM traversal algorithmsObject traversalVery common with more complex algorithmsIt's sometimes a cleaner alternative to iteration2. 콜 스택- 함수를 호출하면 콜스택의 상단에 쌓임- return 혹은 더이상 실행할 코드가 없으면 콜스택의 상단을 제거함. 3, 재귀 조건- 자기 자신을 호출할 것- 종료 조건이 있을 것- 다른 입력값..