코딩 공부/공부 4

[자료구조] 해시 테이블(Hash Table)

[ 해시 테이블 (Hash Table) ] 키(key) - 값(value) 쌍을 저장하는 배열 기반의 구조. 특정 키를 사용해 값을 검색하고 삭입하거나, 삭제할 수 있다. 해시 함수(hash function): 주어진 키를 해시 코드(hash cade)로 변환하는 함수 배열(Array): 해시 테이블의 버킷을 저장. 각 배열 요소는 버킷을 나타내며, 여러 개의 키-값 쌍(Key-Value Pair)을 저장할 수 있다. 버킷(Bucket): 해시테이블의 각 배열 요소. 버킷은 한 개 이상의 키-값 쌍(Key-Value-Pair)을 저장할 수 있다. 데이터를 저장하거나 검색할 수 있는 인터페이스가 제공된다. 해시 테이블에서 가장 중요한 점은 해시 함수(hash function)와 배열(array)을 이용한다..

[자료구조] 스택(Stack), 큐(Queue)

[ 스택(Stack) ] 데이터를 차곡차곡 쌓아 올린 형태의 자료구조 한쪽 끝에서만 삽입과 삭제가 이루어지는 후입선출(LIFO, Last-In-First-Out) 구조 스택은 책을 쌓아놓은 것과 유사한 개념으로 이해하면 된다. 책을 쌓아놓을 때 새로운 책을 얹거나 또는 있는 책을 뺄 때는 맨 위부터 접근이 가능한 것처럼! 스택에서는 Push, Pop 이 두 가지만 알면 된다! Push(삽입): 스택에 새로운 항목을 추가하는 연산, 스택의 맨 위에 배치. Pop(제거): 스택에서 가장 위에 있는 항목을 제거하고 반환하는 연산. [ 특징 ] 후입선출(LIFO): 가장 최근에 추가된 항목이 가장 먼저되는 구조. 제한된 접근: 스택은 가장 위의 항목만 접근할 수 있으며, 데이터를 추가하거나 제거할 때는 항상 가..

[자료구조] 배열, 연결 리스트

[ 자료구조 ] 데이터 값의 모임 -> 메모리 공간을 효율적으로 사용해야 할 때 필요 [ 배열(Array) ] 같은 종류의 데이터를 순차적으로 저장하는 자료 구조 고정된 크기를 갖고 있음 인덱스(Index) 번호로 데이터에 접근할 수 있다. 요소(element): 배열을 구성하는 각각의 값 인덱스(Index): 데이터를 기록할 경우 그 데이터의 이름, 데이터의 크기 등의 속성과 그 기록 장소 등을 표로 표시하는 것. 0부터 시작, 배열의 크기 - 1까지 사용할 수 있다. -> 참조용 데이터 [ C# 배열 선언 및 초기화 ] int[] arr = new int[] { 0, 1, 2 }; int[] arr2 = { 0, 1, 2 }; int[] arr3; arr3 = new int[] { 0, 1, 2 };..

[알고리즘] 깊이 우선 탐색(DFS), 너비 우선 탐색(BFS)

[ 깊이 우선 탐색 | DFS(Depth-First Search) ] 루트 노드(또는 다른 임의의 노드)에서 시작해서 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방식 -> 최대한 깊이 내련 후, 더이상 깊이 갈 곳이 없을 경우 옆으로 이동 [ 특징 ] 모든 노드를 방문해야 하는 경우 사용. 깊이 우선 탐색(DFS)가 너비 우선 탐색(BFS)보다 조금 더 간단 검색 속도 자체는 너비 우선 탐색(BFS)에 비해 느림 스택(stack) 또는 재귀함수로 구현 [ 코드 ] public class Node { public string Name { get; set; } public List Children { get; set; } public bool Visited { get; set; } public..