본문 바로가기

자료구조10

[Topic #자료구조 02] Singly Linked List 구현 with JavaScript // node.js class Node { constructor(data) { this.data = data; this.next = null; } } module.exports = Node; // singly-linked-list01.js const Node = require('./node'); // Singly Linked List 01 - Head만 가지고 있는 경우 class SinglyLinkedList01 { // S.C: O(1) constructor() { this.head = null; this.cnt = 0; } // T.C: O(1) insertHead(item) { const node = new Node(item); this.cnt += 1; node.next = this.head; .. 2022. 9. 6.
[Topic #자료구조 01] Array를 이용한 List 구현 with JavaScript 첫 번째 토픽 키워드 주제는 자료구조입니다. JavaScript 언어를 활용하여 Array를 이용한 List 구현을 해보겠습니다. 구현을 시작하기 전에 먼저 간단히 Array와 List를 비교하겠습니다. Array는 보통 '정적인 배열이다' 라고 해서 처음부터 사이즈가 정해져 있는 크기의 배열입니다. 그래서 만약 처음에 사이즈를 100으로 잡아놓은 배열이 꽉차게 되면 더 이상 요소를 넣을 수 없게 됩니다. 이때 요소를 더 넣게(Push) 된다면 그 배열이 가지고 있는 사이즈가 넘쳐서 오버 플로 (overflow) 라고 합니다. 만약 요소가 하나도 없는 배열에서 요소를 빼는(Pop) 연산을 한다면 그것은 언더 플로 (underflow)가 됩니다. 스택을 이용한 연산이었다면 우리가 많이 들어본 스택 오버 플.. 2022. 1. 7.
[JS 스터디 1기] - hanoi 함수 구현 코드 // hanoi 함수 구현 // 시간 복잡도: O(2^n) // 공간 복잡도: O(1), 재귀 호출 스택 고려 -> O(2^n) let steps = 0; function hanoiRecursive(n, src, des, tem) { if (n > 0) { hanoiRecursive(n - 1, src, tem, des); hanoiMove(n, src, des); hanoiRecursive(n - 1, tem, des, src); } } function hanoiMove(disc, src, des) { steps += 1; console.log(`disc ${disc}: ${src} -> ${des}`); } hanoiRecursive(3, 'A', 'C', 'B'); console.log(`Total.. 2021. 12. 19.
[JS 스터디 1기] - fibonacci 함수 구현 코드 // fibonacci 함수 구현 // 시간 복잡도: O(n) // 공간 복잡도: O(1) function fibonacciIterative(n) { let a = 0; let b = 1; for (let i = 0; i O(n) function fibonacciRecursive01(n) { if (n === 0) return 0; else if (n === 1) return 1; return fibonacciRecursive01(n - 1) + fibonacciRecursive01(n - 2); } //.. 2021. 12. 19.
반응형