본문 바로가기

CS 공부/자료구조25

정적 배열과 동적 배열 비교 최종 수정: 2025.06.12정적 배열과 동적 배열■ 정적 배열 (Static Array)내용이 고정되어 있고, 변경하지 않는 배열보통 리터럴로 선언하며, 불변 데이터를 표현할 때 사용한다.const fruits = ['apple', 'banana', 'orange']; 주요 메서드원본 배열을 변경하지 않는다.forEach(): 각 요소 순회map(): 요소 변환하여 새 배열 반환filter(): 조건에 맞는 요소만 반환includes(): 특정 값 포함 여부 확인find(): 조건에 맞는 첫 요소 반환join(): 배열 -> 문자열 변환slice(): 배열 일부 복사■ 동적 배열 (Dynamic Array)실행 중에 데이터를 추가하거나 제거할 수 있는 배열사용자 입력, API 데이터 등으로 구성되는.. 2025. 6. 12.
해시 테이블과 해시 함수 최종 수정: 2025.06.04해시 테이블과 해시 함수해시 테이블은 빠른 검색이 필요한 거의 모든 곳에서 사용되는 핵심적인 자료구조이다. 특히 웹 개발에서는 객체, 딕셔너리, 맵 등의 형태로 일상적으로 사용한다.■ 해시 테이블 (Hash Table)해시 함수와 배열을 함께 사용하는 자료 구조이다. key를 인덱스로 사용하지 않고 해시 함수에 넣어 리턴된 값을 인덱스로 사용한다. 인덱스에 key와 value을 쌍으로 저장한다. 저장한 데이터를 가지고 올 때도 해시 함수를 통해 히턴된 값으로 인덱스에 접근한다.// 해시 테이블의 개념적 구조const hashTable = new Array(10); // 크기 10인 배열// 저장 과정function set(key, value) { const index = .. 2025. 6. 4.
자료구조의 큰 그림 최종 수정 : 2025.04.18자료구조데이터를 효율적으로 저장하고 관리하는 방법을 학습하는 과목이다. 어떠한 구조로 데이터를 다룰지에 대해 학습한다.■ 자료구조와 알고리즘자료구조와 더불어 알고리즘을 함께 학습하는 것이 좋다. 둘 사이에는 깊은 연관성이 있다. 어떤 자료구조가 사용되었느냐에 따라 사용 가능한 알고리즘이 달라질 수 있기 때문이다.자료구조(data structure) : 데이터를 효율적으로 저장하고 관리하기 위한 방법알고리즘(algorithm) : 어떠한 목적을 이루기 위해 필요한 일련의 연산 절차 ■ 시간 복잡도와 공간 복잡도자료구조와 알고리즘을 고려하며 작성한 코드는 훨씬 더 품질 좋은 코드가 될 가능성이 높다. 자료구조와 알고리즘의 고려 여부에 따른 성능의 차이는 '시간 복잡도'와 '공.. 2025. 4. 18.
m원 탐색 트리(m-way search tree) 최종 수정 : 25.1.2m원 탐색 트리1. 정의와 특성최대 차수가 m인 트리로 인덱스를 만들기에 적합한 트리이다. 이진 탐색 트리의 확정된 형태로 높이를 줄이기 위해 사용한다. 루트와 단노드를 제외한 노드는 최소한 두 개의 서브 트리를 가지고, 최소 m/2 개, 최대 m 개의 서브 트리를 가진다. 각 노드의 키의 개수는 서브 트리의 개수보다 1 작다.2. B 트리의 정의와 특성B - 트리(Balanced tree)는 이진 트리에서 탐색 성능의 향상을 위해 단노드의 높이를 같게 한 균형 트리이다. 최대 m개의 서브 트리를 가질 수 있어 이를 m차 균형 트리(m-balanced tree)라 하여 m - 원 탐색 트리라고 한다. B 트리의 특징은 다음과 같다.모든 노드의 킷값은 정렬되어 있어야 한다.각 노드.. 2025. 1. 2.
이진 탐색 트리 최종 수정 : 25.1.2이진 탐색 트리1. 소개이진 탐색 트리는 임의의 키를 가진 원소를 삽입 * 삭제 * 검색하는 데 효율적인 자료구조로 모든 연산은 키값을 기초로 실행한다. 이진 탐색 트리는 이진 트리이며, 공백이 아니면 모든 원소는 다른 키를 갖는다. 왼쪽 서브 틀 원소들의 키가 루트의 키보다 작고, 오른쪽 서브 트리 원소들의 키는 루트의 키보다 큰 값을 가진다.2. 이진 탐색 트리의 탐색이진 탐색 트리에서 키값이 X인 원소를 탐색하는 방법은 루트를 시작으로 탐색한다. 이진 탐색 트리가 공백이면 탐색은 종료한다. 탐색하는 노드가 탐색 키와 같으면 탐색이 성공하고 해당 포인터를 반환한다. 반면에 키값이 같지 않으면 현재 노드의 키값과 탐색 키값을 비교하여 탐색 키가 크면 오른쪽 서브 트리를 탐색하고.. 2025. 1. 2.