공부/그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
큐 - 구현
큐 - 구현
2024.01.28큐(Queue) 구현: 양방향 연결 리스트를 활용한 순차적 데이터 처리 큐는 FIFO(First In First Out) 방식으로 데이터를 관리하는 선형 자료구조입니다. 데이터의 삽입(enqueue)은 한쪽 끝에서 이루어지고, 데이터의 삭제(dequeue)는 반대쪽 끝에서 이루어집니다. 이번 섹션에서는 양방향 연결 리스트를 활용하여 큐를 구현하는 방법을 살펴보겠습니다. 1. 양방향 연결 리스트의 수정 양방향 연결 리스트는 각 노드가 다음 노드 뿐만 아니라 이전 노드를 가리키는 포인터도 가지고 있습니다. 이를 통해 노드의 추가 및 삭제가 더욱 유연하고 효율적으로 이루어질 수 있습니다. // DoublyLinkedList.mjs class Node { constructor(data, next = null, ..
큐 - 개념
큐 - 개념
2024.01.28큐(Queue) 구현: 양방향 연결 리스트를 활용한 데이터 처리 큐(Queue)는 First In First Out(FIFO) 규칙을 따르는 선형 자료구조로, 데이터의 삽입은 한쪽 끝에서, 삭제는 반대쪽 끝에서 이루어집니다. 큐의 가장 큰 특징은 가장 먼저 들어온 데이터가 가장 먼저 나간다는 것입니다. 이번 섹션에서는 양방향 연결 리스트를 활용하여 큐를 구현하는 방법을 살펴보겠습니다. 1. 양방향 연결 리스트의 구현 양방향 연결 리스트는 각 노드가 다음 노드 뿐만 아니라 이전 노드를 가리키는 포인터도 가지고 있습니다. 이를 통해 노드의 추가 및 삭제가 더욱 유연하고 효율적으로 이루어질 수 있습니다. // Node.js class Node { constructor(data, next = null, prev..
스택 - 구현
스택 - 구현
2024.01.28스택(Stack) 구현: 자바스크립트를 활용한 데이터 처리 스택은 데이터를 FILO(First In Last Out) 방식으로 처리하는 선형 자료구조입니다. 스택은 데이터의 삽입(push), 삭제(pop), 최상위 데이터 확인(peek), 비어있는지 확인(isEmpty) 등의 작업을 할 수 있습니다. 연결 리스트를 사용하여 스택을 구현할 경우, 이러한 작업들이 매우 효율적으로 수행될 수 있습니다. 1. 스택의 추상 자료형 구현 스택의 기본적인 기능을 아래와 같이 구현할 수 있습니다. 이 예에서는 연결 리스트(LinkedList)를 사용하여 스택을 구현하였습니다. // Stack.mjs import { LinkedList } from "./LinkedList.mjs"; class Stack { constr..
스택 - 개념
스택 - 개념
2024.01.28스택(Stack) 이해와 구현 스택은 데이터를 제한된 방식으로 접근할 수 있는 선형 자료구조입니다. 스택은 특히 "First In Last Out(FILO)" 또는 "Last In First Out(LIFO)"의 특성을 가지며, 이는 가장 마지막에 쌓은 데이터를 가장 먼저 꺼낼 수 있다는 의미입니다. 일상생활에서 접시를 쌓는 것과 같이, 스택은 데이터의 추가와 삭제가 한 방향에서만 이루어지는 구조를 가지고 있습니다. 1. 스택의 기본 동작 스택의 기본적인 동작은 다음과 같습니다: push: 스택의 맨 끝에 데이터를 추가합니다. pop: 스택의 맨 끝에서 데이터를 꺼냅니다. peek: 스택의 맨 끝 데이터를 확인합니다. isEmpty: 스택이 비어 있는지 확인합니다. 2. 스택의 구현 연결리스트를 사용하여..
연결리스트 - 구현
연결리스트 - 구현
2024.01.28연결리스트 구현하기: 자바스크립트를 활용한 데이터 관리 이번 강의에서는 자바스크립트를 이용해 연결리스트를 구현하고, 그 사용법을 알아보았습니다. 연결리스트는 데이터를 메모리에 효율적으로 분산하여 할당하고, 이를 서로 연결하여 관리하는 자료구조입니다. 이 자료구조는 다른 구조인 스택, 큐의 구현에도 활용될 수 있습니다. 다음으로 연결리스트의 추상 자료형과 실제 구현 방법을 살펴보겠습니다. 1. 연결리스트의 추상자료형 연결리스트는 데이터와 데이터에 대한 연산을 정의하는 추상자료형으로 표현됩니다. 연결리스트에서 필요한 기본 연산은 다음과 같습니다: printAll(): 모든 데이터 출력 clear(): 모든 데이터 제거 insertAt(index, data): 원하는 인덱스에 데이터 삽입 insertLast(..
연결리스트 - 개념
연결리스트 - 개념
2024.01.28배열과 연결 리스트: 데이터 구조의 선택 프로그래밍에서 데이터를 효율적으로 관리하기 위해 배열과 연결 리스트는 기본이 되는 자료구조다. 각각의 특성과 장단점을 이해하고 상황에 맞게 적절한 자료구조를 선택하는 것이 중요하다. 이번 강의에서는 배열과 연결 리스트의 특성을 비교하고, 언제 어떤 자료구조를 선택해야 하는지에 대해 알아본다. 1. 배열: 연속된 메모리 공간을 사용하는 자료구조 인덱스를 통한 빠른 접근: 배열은 메모리 상에서 연속된 공간을 차지하기 때문에, 시작 주소만 알면 인덱스를 통해 데이터에 빠르게 접근할 수 있다(O(1)). 데이터 삽입과 삭제의 비효율성: 배열에 데이터를 삽입하거나 삭제할 때는 기존 데이터를 복사하고, 새로운 메모리 공간을 할당하는 등의 과정이 필요하다. 2. 연결 리스트:..
배열
배열
2024.01.28배열: 기본이 되는 자료구조의 이해 배열은 프로그래밍의 가장 기본이 되는 자료구조 중 하나다. 자바스크립트를 비롯한 대부분의 프로그래밍 언어에서 배열은 데이터를 효율적으로 관리하기 위해 사용된다. 하지만 자바스크립트의 배열은 다른 언어의 일반적인 배열과 몇 가지 중요한 차이점이 있다. 이 글에서는 일반적인 배열의 특성과 자바스크립트 배열의 독특한 특성을 살펴본다. 1. 일반적인 배열의 특성 메모리 상의 배열: 배열은 메모리에서 연속된 공간을 차지한다. 예를 들어 **int arr[10]**으로 배열을 선언하면, 운영체제는 10개의 정수가 들어갈 수 있는 연속된 메모리 공간을 확보한다. 인덱스를 통한 빠른 접근: 배열의 인덱스를 통해 데이터에 빠르게 접근할 수 있다. 인덱스 참조는 O(1)의 시간 복잡도를..
자바스크립트 실행 환경 구축
자바스크립트 실행 환경 구축
2024.01.28자바스크립트를 활용한 자료구조와 알고리즘: 환경 구축 가이드 자바스크립트로 자료구조와 알고리즘을 배우기 위해서는 적절한 개발 환경 구축이 필수적이다. 본 강의에서는 Visual Studio Code와 Node.js를 사용하여 자바스크립트 개발 환경을 구축하고, 간단한 테스트 코드를 실행해본다. 아래 단계를 따라 환경을 구축해보자. 1. 개발 도구 설치 Visual Studio Code (VSCode): 자신의 운영체제에 맞는 VSCode를 설치한다. Node.js: 자신의 운영체제에 맞는 Node.js를 설치한다. 2. 터미널 사용 윈도우 사용자는 “Power Shell”, 맥 사용자는 “Terminal”을 실행한다. 3. Node.js 설치 확인 터미널에 **node -v**를 입력하여 Node.js가..