Computer Science 4

[자료구조] 해시(Hash) 충돌이란?

Hash 충돌이란? 해시함수의 입력값은 무한하지만, 출력값의 가짓수는 유한(출력값, 즉 키가 유한하지 않다면 해시기법을 사용하는 의미가 없다.)하므로 해시 충돌은 반드시 발생한다.(비둘기집 원리) 위의 그림에서 Sandra Dee라는 사람의 연락처를 삽입하는 상황을 가정해보자. Sandra Dee라는 키는 John Smith라는 키와 결과값이 같다. 둘 사이에 충돌이 일어난 것이다. 그러자 충돌이 일어난 주소(혹은 색인)의 bucket에 레코드가 추가로 담긴 것을 확인할 수 있다. 만약에 해당 bucket에 충분한 공간이 없다면? 오버플로우가 발생한다. 이러한 해시 충돌을 해결하는 방법에는 여러가지가 있다. 1. 체이닝(Chaining) 버켓 내에 연결리스트(Linked List)를 할당하여, 버켓에 데..

[자료구조] 힙(Heap) 자료구조란 ?

1) 힙(Heap) 이란 특성 우선순위 큐를 위해 만들어진 자료구조 💡우선순위 큐(Priority Queue) 더보기 우선순위의 개념을 큐에 도입한 자료구조 데이터들이 우선순위를 가지고 있어 우선순위가 높은 데이터가 먼저 나간다! 완전 이진 트리의 일종으로, 우선순위 큐를 위하여 만들어진 자료구조 💡 완전 이진트리 더보기 1) 완전 이진트리는 마지막 레벨을 제외 하고 모든 레벨이 완전히 채워져 있다. 2) 마지막 레벨은 꽉 차 있지 않아도 되지만, 노드가 왼쪽에서 오른쪽으로 채워져야 한다 여러 값 중, 최대값과 최소값을 빠르게 찾아내도록 만들어진 자료구조로 반정렬 상태(느슨한 정렬 상태) 큰 값이 상위 레벨에 있고 작은 값이 하위 레벨에 있다는 정도 간단히 말하면 부모 노드의 키 값이 자식 노드의 키 값..

[자료구조] Array 와 LinkedList

1) 배열(Array) 특성 👀 자바스크립트에서 배열은 도대체 어떤 거지? 😊장점 😫단점 배열을 주로 사용하는 경우 배열의 시간복잡도 2) 연결 리스트(Linked List) 특성 😊장점 😫단점 연결리스트 종류 단일 연결 리스트(Singly Linked Linear List) 이중 연결 리스트 (Doubly Linked Linear List) 원형 연결 리스트 (Circularly Linked Linear List) 시간 복잡도(Time complexity) 3) Array vs Linked List 비교 참고자료 1) 배열(Array) 특성 연속된 메모리 공간에 순차적으로 저장된 데이터 모음 실제 메모리 상에서 물리적으로 데이터가 순차적으로 저장되기 때문에 데이터에 순서가 있으며, index가 존재하여..

[알고리즘] 브루트 포스(Brute Force | 완전탐색)

※ 배워가고 있는 학생입니다. 틀린 부분에 대한 댓글 환영입니다 😊 1) '브루트 포스'란? (완전탐색이란?) Brute: 무식한, 짐승같은 Force: 힘 '무식한 힘', 즉 말그대로 무식하게 모든 경우의 수를 일일이 다 계산하면서 답을 찾아내는 알고리즘이다. 무식하게 문제를 접근하니 틀릴 일이 없다는 장점이 있지만, 시간복잡도가 엄청나게 커진다는 단점이 있다. 가령, 1부터 100까지의 합을 구하는 문제가 있다고 치자. 다양한 방법이 있겠지만, 브루트 포스는 그냥 1부터 1+2=3, 3+3=6, 6+4=10... 이런 식으로 100까지 더해갈 것이다. 100은 비교적 작은 숫자이므로, 시간 복잡도가 그리 크지 않을 수 있지만 만약 100억개의 수를 더한다고 치면 시간복잡도는 엄청나게 늘어나고 만다. ..

728x90