자료구조(13)
-
[자료구조] 해시 - (2) 구현 - 충돌해결 -① Chaining
class ValuePair{ constructor(key,value){ this.key = key; this.value = value; } } class HashTable{ constructor(){ this.storageLimit = 10; this.table = new Array(this.storageLimit); } Hash(key){ let hash = 0; for(let i = 0; i < key.length; i++){ hash += key.charCodeAt(i); } return hash % this.storageLimit; } add(key,value){ const index = this.Hash(key); if(this.table[index] === undefined){ this.ta..
2021.03.10 -
[자료구조] 해시 - (2) 구현 - 일반 해시 테이블
class HashTable { constructor() { this.storageLimit = 10; // 해시테이블의 용량 한계 설정 this.table = new Array(this.storageLimit); // 정해진 용량 크기로 해시 테이블을 배열로 만듬 } // 키, 인덱스, 값 // key -> index (키를 가지고 인덱스로 변환해주는 해시 함수) Hash(key) { let hash = 0; for (let i = 0; i
2021.03.10 -
[자료구조] 해시 - (1) 개념
해시 - (1) 개념 해시란 무엇인가? 데이터를 관리하고 유지하는 자료구조 리소스 < 속도 (리소스를 포기하고 속도를 취한 자료구조) 키(key)는 해시 함수(Hash function)을 통해 해시(hash) = 배열의 인덱스 로 변경이 되고, 해시 = 배열의 인덱스는 값(value)와 매칭되어 저장소(storage)에 저장이 된다 Hash Table의 요소 키(key) : 고유한 값, 해시의 input 해시 함수(Hash function) : 키를 해시로 바꿔주는 역할 해시(Hash) : 해시 함수의 결과물, 저장소에서 값과 매칭되어 저장된다 = 배열의 인덱스 값(value) : 저장소에 최종 저장되는 값 해시 Big O Notation 각 조회의 평균 시간은 테이블에 저장된 요소 수와 관련이 없다. ..
2021.03.10 -
[자료구조] 연결 리스트 - (1) Single Linked List
연결 리스트 배열(일종의 리스트) 장점: 구현하기가 쉽고 사용하기 편하다. 배열의 원소에 접근하려면 대괄호에 인덱스만 넣어주면 된다. 단점 크기가 고정되어 있다 배열의 처음이나 중간에서 원소를 추가/삭제 하려면 다른 원소까지 옮겨야 하므로 번거롭다 연결리스트(Linked List) 연결리스트는 일련의 원소를 배열처럼 차례대로 저장하지만 원소들이 메모리상에 연속적으로 위치하지 않는다 각 원소는 원소 자신과 다음 원소를 가리키는 참조 정보(포인터,링크 라고도함)가 포함된 노드로 구성된다 장점: 원소 추가 삭제 시 다른 원소들을 이동하지 않아도 된다(포인터 덕분) 단점: 배열은 특정 원소에 인덱스로 바로 접근할 수 있는 반면 연결 리스트에서는 원소를 찾을 때까지 처음(헤드,head)부터 루프를 반복해야함 연결..
2021.03.02 -
재귀함수
재귀 함수 재귀 함수(Recursive Function)란 자기 자신을 다시 호출하는 함수를 의미함 단순한 형태의 재귀 함수 예제 '재귀 함수를 호출합니다.'라는 문자열을 무한히 출력 어느정도 출력하다가 최대 재귀 깊이 초과 메시지가 출력됨 function recursive(){ console.log('재귀 함수를 호출합니다.'); recursive(); } recursive(); 재귀 함수의 종료 조건 재귀 함수를 문제 풀이에서 사용할 때는 재귀 함수의 종료 조건을 반드시 명시해야 함. 종료 조건을 제대로 명시하지 않으면 함수가 무한히 호출될 수 있음. 팩토리얼 구현 예제 n! = 1 X 2 X 3 X ... X (n-1) X n 수학적으로 0!과 1!의 값은 1임. 내가 구현한 코드(자바스크립트) f..
2021.02.24 -
[자료구조] 큐(Queue)
큐(Queue) 스택이 LIFO(Last-In, First-Out) - 가장 나중에 들어온 것이 가장 먼저 나가는 구조 였다면 큐는 FIFO(First-In, First-Out) - 가장 먼저 들어온 것이 가장 먼저 나가는 구조(선입선출) 큐는 입구와 출구가 모두 뚫려있는 터널과 같은 형태로 시각화 할 수 있음. 예시 마트 계산대에서 줄을 서면 줄을 먼저 산 사람이 물건을 먼저 산다 모 대학교 카페 중에 '큐'라는 이름의 카페가 있다. 커피를 사려고 가장 먼저 줄을 선 사람이 먼저 커피를 주문한다 큐의 대표적인 사용 사례 프로세스 스케줄링 대부분의 입출력(파일 입출력 등) 프린터 대기열 네트워크 패킷 처리 게임 대기열(롤,오버워치) 큐의 대표적인 구현 방법 정적인 어레이(Fixed Array) 장점: 구..
2021.02.23