Developer/Data Structure

Doubly Linked List? - Linked List(연결리스트)에서 삽입과 삭제가 일어날 때, 좀 더 편리하게 이용하기 위한 자료구조 - 이전 Node를 가리키는 prev 포인터와 다음 Node를 가리키는 next 포인터를 가지고 있는게 핵심이다 구현 방법에는 참 여러가지가 있겠지만, 편리한 구현을 위해 작성자는 head와 tail을 dummy로 설정하여 구현하였다! 왜냐하면, 편하기 때문이다 ^8^ ( 아닐수도 있어요... ㅎㅎ ) public class DoublyLinkedList { private class Node { private int val; private Node next; private Node prev; Node(final int val) { this.val = val; th..
Hash? - Hash Function : 해시 함수는 임의의 문자열을 받아서 고정 문자열로 바꾸어주는 함수다! 이때 서로 다른 문자열에 대하여 같은 고정 문자열이 될 수 있는데, 이러한 경우는 해쉬 충돌이라고 한다! H(s1) = H(s2) - 따라서 많은 공간을 낭비하게 된다! Why? 해쉬 값이 어떻게 나올지 모르니까! - 그럼에도 불구하고!! 우리는 메모리를 버리고 시간을 산 셈이다! - 일반적으로 데이터를 조회할 때 배열은 O(n)이지만 잘 만든 Hash의 경우 O(1)의 조회가 가능하다 public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value; for (int i = 0; i < value..
Priority Queue? - 우선순위 큐 : 일반적인 FIFO(First In First Out)의 Queue에서 우선순위의 개념을 도입한 Queue - 데이터에 대한 처리 절차를 순위에 따라 처리하기 위해 사용된다! - 보통 Heap으로 구현되어 사용된다! 언제 사용되나요? - 많고 복잡한 데이터에 대하여 처리하는 순위를 매겨야 할 때 사용된다! - 실제 사례 1. 시뮬레이션 시스템 2. 네트워크 트래픽 제어 3. 운영체제의 작업 스케쥴링 - 삽입, 삭제의 시간복잡도가 O(logN) 이므로 순위를 매길 때, 100만번의 연산을 대략 18번의 연산으로 줄일 수 있다!! Heap? - 완전 이진 트리(Complete Binary Tree)의 일종으로 우선순위 큐를 위하여 만들어진 자료구조다! cf > ..
배열? - 배열은 연속된 자료를 저장하기 위한 선형 자료 구조다 - 배열은 기본적으로 지역적 특성을 가지고 있기 때문에 CPU가 지역 참조를 할 때 속도가 빠르다 - 다시말해서, Cache Hit 의 가능성이 커진다! - 우리는 이미 배열을 사용하는 법 을 알고 있다!! But.... new int[1000] 는 한계성이 있다. * 입력으로 들어오는 개수가 N(미지수)일 때, 어떠한 근거로 메모리를 확보해야 되는가? 에 대한 문제점 --> 정적 배열을 동적 배열로 사용하면 된다!! -> ArrayList ArrayList? - 배열의 크기를 들어오는 자료의 양에 따라서 조절할 수 있다!! - 데이터를 추가하는 데에 시간복잡도는 O(1) 에 처리할 수 있다 ▶ 하지만.... - 동적으로 메모리가 늘어나는 ..
Collection Framework? - 대량의 데이터를 쉽고 효과적으로 처리할 수 있게 표준화된 방법을 제공하는 클래스의 집합이다. - 한마디로, 데이터를 저장하는 자료구조 + 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현했다!! - Java의 기능을 나타내기 위한 클래스, 각각의 Interface를 상속하여 구현이 되어있다 - 모든 클래스가 처럼 제네릭으로 표현되어 있다!! 제네릭이란? - Generic : 데이터의 타입(data type)을 일반화(generalize)한다. - 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일시에 미리 지정하는 방법이다. 그러면 결과적으로 다음과 같은 장점을 얻을 수 있다! ○ Class Method 내부에서 사용되는 객체의 타입 안정성을 높일 수 있다..
huisam
'Developer/Data Structure' 카테고리의 글 목록