본문 바로가기

Web Development/자료구조

(9)
[자료구조] 트리(Tree) 자료구조 정리 트리(Tree) 자료구조 정리1. 리스트 vs 트리리스트: 선형 자료구조트리: 비선형 자료구조2. 트리 자료구조의 규칙노드는 자식만 가리킬 수 있다. (형제 X, 부모 X)출발점은 하나여야 한다.Root: 트리의 최상단 노드, 부모가 없는 최상위 노드Child: Root로부터 아래로 이동할 때 직접적으로 연결된 노드Parent: 자식 노드에서 Root 방향으로 이동할 때 직접적으로 연결된 노드Siblings: 같은 부모를 가진 노드 그룹Leaf: 자식이 없는 노드Edge: 노드 간의 연결Size: 트리에 포함된 모든 노드의 개수Depth: 루트 노드부터의 거리Height: 깊이 중 최대값Degree: 각 노드의 자식 방향 간선 개수트리의 크기가 N일 때 전체 간선의 개수는 N-1개3. 이진 탐색 트리 (..
[자료구조] 셋(Set) 무엇인가?셋(Set)은 순서가 없고 중복을 허용하지 않는 자료구조이다.3가지 Set의 구현체가 존재한다.- Hash 알고리즘을 이용한 HashSet   hash 테이블을 이용하여 map형태로 값을 보관하고 그에 따라 탐색 속도가 다른 구현체들보다 훨씬 빠르다.- 이진 탐색 트리를 사용하여 오름차순 정렬까지 해주는 TreeSet   정렬된 순서값을 구할 수 있다. 하지만, 값을 저장할때 정렬을 매번해주게 되어서 시간이 걸리며    순회작업을 진행할 때 hashSet보다 느리다.- Set에 순서를 부여해주는 LinkedHashSet 왜 사용하는가?- 집합 관련 문제에서 유용하게 사용할 수 있다. Set은 집합이라는 의미를 가진다.- 중복 처리를 고려해야 할 경우- 중복 처리와 검색 속도가 중요할 때자바스크립..
[자료구조] 해시테이블(Hash Table) 무엇인가?해시 테이블은 키/값 쌍 데이터를 저장하는 데 사용되는 데이터 구조이다. 해시 테이블은 해시 함수를 이용하여, index를 설정하고, 그 내부에 데이터를 저장한다.해시 테이블을 사용하면 O(1)의 성능으로 데이터를 참조, 수정, 삭제할 수 있다.왜 사용하는가?장점- 효율적인 데이터 검색 및 관리해시 함수를 통해서 계산된 인덱스를 사용하여 데이터를 O(1)의 시간 복잡도를 가지고 참조, 수정, 삭제가 가능하다.- 데이터 중복 방지키의 유일성을 통해 중복 데이터 삽입을 방지할 수 있다.- 동적 크기 조정데이터의 양에 따라 해시 테이블의 크기를 동적으로 조정할 수 있어, 자원의 효율적인 사용이 가능하다.단점- 해시 충돌 두 개 이상의 키가 동일한 해시 값을 가질 경우, 충돌이 발생하고, 이는 데이터..
[자료구조] 덱 (Deque) 무엇인가?doubled-ended queue의 약자로, 양 끝에서 데이터를 추가하거나 삭제할 수 있는 자료구조덱 자료구조를 사용하여, 큐와 스택을 선택적으로 구현할 수 있다.(큐 : FIFO, 선입 선출 / 스택 : LIFO, 후입 선출) 왜 사용하는가?양방향 큐가 필요할 경우 사용양쪽 끝에서 요소를 추가하거나 제거해야 할 경우, 덱은 이를 효율적으로 수행할 수 있다.예를 들어, 사용자의 명령어를 undo(취소)하고 redo(재실행, )하는 기능을 구현할 때, 유용하다.데이터 스트림 처리데이터의 최신 항목과 가장 오래된 항목을 동시에 관리해야 할 때, 덱을 사용하면 쉽게 접근하고 업데이트할 수 있다.리소스 풀 관리여러 자원에 대한 접근을 관리할 때, 덱을 사용하면 자원을 효율적으로 추가하고 제거하는 데 ..
[자료구조] 큐 (Queue) 큐?리스트의 한쪽 끝에서만 삽입과 삭제가 일어나는 스택과는 달리 리스트의 한쪽 끝에서는 원소들이 삭제되고 반대쪽 끝에서는 원소들의 삽입만 가능하게 만든 순서화된 리스트. 가장 먼저 리스트에 삽입된 원소가 가장 먼저 삭제되므로 선입 선출(先入先出)인 FIFO(first in first out) 리스트라고 한다.[네이버 지식백과] 큐 [queue] (컴퓨터인터넷IT용어대사전, 2011. 1. 20., 전산용어사전편찬위원회)무엇인가일반 명사 : 대기 행렬, (무엇을 기다리는 사람·자동차 등의) 줄, 줄을 서서 기다리다고유 명사 : 선입 선출 구조(First In First Out)로 먼저 삽입된 자료부터 출력 혹은 삭제되는 리스트 형태의 자료구조스택의 후입선출(LIFO) 특성이 필요한 곳에 사용한다.왜 사용..
[자료구조] 양방향 연결리스트 (Doubly Linked List) 단방향 연결리스트와 양방향 연결리스트의 차이점- 연결리스트는 데이터의 연결이 한 방향으로 되어 있다.    그러나, 양방향연결리스트는 이름 그대로, 데이터끼리 양방향으로 연결되어 있다.단방향 연결리스트와 비교한 양방향 연결리스트의 장단점장점- 각 노드의 앞과 뒤에 있는 노드들의 정보를 저장하기 때문에, 리스트의 앞, 뒤에서 모두 접근이 가능하다.단점- 단방향 연결리스트보다, 메모리의 사용이 좀 더 많다.사용처본인의 경우, 큐 자료구조를 만들기 위해서 사용했다.큐는 FIFO 특성을 가진 자료구조이다.즉 먼저 들어온 것이 먼저 나가야한다.단방향 연결리스트를 사용해서 큐를 구현하게되면,"데이터의 삽입"은 편하지만,"데이터의 제거"가 필요할 경우, head에서 tail까지의 이동한 후, 데이터를 삭제해야한다. ..
[자료구조] 스택 (Stack) 무엇인가일반 명사 : 무더기, 많음, 쌓다. 채우다. 쌓아올린 더미고유 명사 : 후입 선출 구조(Last In First Out)로 마지막 삽입된 자료부터 출력 혹은 삭제되는 형태의 자료구조왜 사용하는가?스택의 후입선출(LIFO) 특성이 필요한 곳에 사용한다.- 함수의 호출 관리 : 프로그래밍에서 함수를 호출할 때, 각 함수의 반환 주소와 지역 변수를 저장하는데 스택을 사용한다.이는 프로그램이 어떤 함수를 언제 끝내고 다음 작업으로 넘어가야 하는지를 정확히 관리할 수 있게 해준다.- 역순 문자열 생성 : 문자열을 역순으로 만들 때 스택을 사용할 수 있다. 문자열의 문자를 하나씩 스택에 넣은 다음, 하나씩 꺼내면 원래 문자열의 역순을 얻을 수 있다.- 괄호 검사 : 수학적 수식이나 프로그래밍 ..
[자료구조] 연결리스트 (Linked List) 무엇인가일반 명사 : 연결된 목록?고유 명사 : 메모리 공간에서 떨어져 저장되어 있는 데이터들를 포인터로 연결해서 리스트 형태로 구현한 자료구조왜 사용하는가?배열의 단점(크기 예측의 어려움, 삭제/삽입의 비효율성)을 해결하기 위해서 사용되는 자료구조이다.- 연결 리스트 만들 때는 필요한 데이터만큼 노드를 생성하고, 생성된 노드를 연결하는 방식으로 만들기 때문에 데이터의 전체 크기를 고려하지 않아도 된다.- 데이터의 수정, 삽입 시에는 노드를 만들거나 삭제한 후, 관련된 노드가 가리키는 포인터만 변경하기 때문에 배열에 비해 간단하다.배열과 연결리스트의 비교- 데이터의 크기가 변하지 않고, 참조가 자주 일어난다면 배열을 사용.- 데이터의 크기가 자주 변하고, 수정, 삭제가 많이 일어날 경우 연..