일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 도커
- git
- nginx
- 세션(Session)
- 자료구조
- Wil
- docker
- JWT
- redis
- django
- CS
- 장고
- 코딩테스트
- 개발공부
- 연습
- 쿠키(cookie)
- Python
- NoSQL
- 오블완
- 아티클 스터디
- Doker
- web
- flask
- Til
- 티스토리챌린지
- viewsets
- ERD
- github
- SQL
- 파이썬
- Today
- Total
목록자료구조 (6)
SteadyDrills
241121 힙(Heap)힙은 완전 이진트리 구조를 가지는 비선형 자료구조로, 특정한 정렬 조건(최대 힙 또는 최소 힙)을 만족한다.이러한 힙이 사용되는 곳은 그래프 알고리즘을 구현해 네트워크 경로 최적화, 지도의 최단 경로 계산 등에 사용되기도 하고, 데이터 스트림 처리를 구현해 주식, 실시간 센서 데이터 분석에도 사용된다. 힙(Heap)의 특징완전 이진트리: 모든 레벨이 완전히 채워져 있으며, 마지막 레벨은 왼쪽부터 채워짐.정렬 조건:최대 힙: 부모 노드가 자식 노드보다 크거나 같음.최소 힙: 부모 노드가 자식 노드보다 작거나 같음.효율적인 연산: 삽입과 삭제 연산은 O(log n) 시간 복잡도를 가짐. 힙(Heap)의 장단점 장점우선순위 큐 구현에 적합하다.최대/최솟값을 빠르게 찾을 수 있다.동적 ..

241115 데큐 (Deque)데큐는 Double-Ended Queue의 약자로, 양쪽 끝에서 데이터를 추가하거나 제거할 수 있는 선형 자료구조다. 즉, FIFO와 LIFO(Last In, First Out) 모두 지원할 수 있다. 배열 기반 데큐인덱스를 통한 빠른 접근이 가능하지만, 양쪽 끝에서의 삽입과 삭제를 지원하기 위해 추가적인 처리가 필요할 수 있다.양쪽 끝에서 삽입 또는 삭제 시, 요소를 이동해야 하므로 성능 저하가 발생할 수 있다.링크드 리스트 기반 데큐양쪽 끝에서의 삽입 및 삭제 모두 O(1)로 빠르며, 메모리 사용이 유연하다.링크드 리스트의 포인터로 인해 메모리 오버헤드가 발생할 수 있다. 장점양쪽 끝에서의 삽입 및 삭제가 가능하여 유연한 데이터 처리가 가능하다.스택과 큐의 기능을 모두..

241114 큐 (Queue) 저장하는 선형구조이다. FIFO(First In, First Out) 방식으로 작동하며,배열(Array) 또는 연결 리스트(Linked List)를 사용하여 구현할 수 있다. 배열을 이용한 큐 구현배열을 사용한 큐 구현은 고정된 크기를 가지며, 인덱스를 사용하여 요소를 관리한다. 배열의 크기를 초과할 경우, 큐는 오버플로우가 발생할 수 있다.연결 리스트를 이용한 큐 구현연결 리스트를 사용한 큐 구현은 동적으로 크기를 조절할 수 있으며, 노드를 추가하거나 제거하는 데 유리하다. 이 방식은 메모리 효율성이 높고, 오버플로우 문제를 피할 수 있다. 장점순서대로 데이터를 처리할 수 있어, 작업의 순서를 유지할 수 있다.멀티태스킹 시스템에서 프로세스 관리에 유용하다.단점한쪽 끝에..

트리(Tree)계층적 데이터를 저장하고 관리하는 데 사용된다. 트리에는 사이클 및 루프가 존재할 수 없다. 트리(Tree)는 노드(Node)와 간선(Edge)으로 구성되며, 각 노드는 데이터와 자식 노드에 대한 참조를 포함한다. 트리의 기본 구성 요소루트 노드(Root Node): 트리의 최상위 노드. 트리는 하나의 루트 노드를 가진다.부모 노드(Parent Node): 자식 노드를 포함하는 상위 노드.(위의 이미지 상 A, a와 A.b에 대한 A)자식 노드(Child Node): 부모 노드로부터 연결된 하위 노드. (위의 이미지 상 A에 대한 A, a와 A.b )형제 노드(Sibling Nodes): 같은 부모 노드를 공유하는 노드. (위의 이미지 상 A,a와 A.b의 관계 )잎 노드(Leaf ..
240724시간 복잡도란 (Time Complexity) ?알고리즘이 수행(연산)되는 데 필요한 시간의 양을 입력 크기 n에 대한 함수로 표현한 것이다.그 말은 좋은 알고리즘은 입력값이 늘어나도 걸리는 시간이 덜 늘어나는 알고리즘이라는 거었다. 시간 복잡도가 중요한 이유 성능 : 알고리즘이 큰 입력 데이터에 대해서 어떻게 동작할지를 성능을 추측할 수 있다.효율: 서로 같은 값을 얻는 알고리즘도 들이는 시간을 기준으로 더 효율적인 알고리즘을 알 수 있다. 최적화: 더 빠른 알고리즘을 설계하고 최적화할 수 있는 방향을 제시한다. 빅오 표기법(Big-O notation)알고리즘의 효율성을 분석하는 도구, 알고리즘이 커지는 입력 크기에 대해 얼마나 자원(시간 or 공간)을 소비하는지를 표현하는 방법이다. 빅오..
20240715Stack 자료구조란?사전적 정의로는 한쪽 끝으로만 자료를 넣고 뺄 수 있는 자료 구조이다.비유를 하자면 무거운 벽돌을 위로 쌓는 형태의 자료 구조이다, 아래에 깔려있는 자료는 위의 자료를 꺼내고 나서야 꺼낼 수 있다.▶ Last In First Out이라고 해서 LIFO 구조라고 한다.이러한 자료구조는 순서 그 자체가 필요하다던지 등을 이유로 많이 쓰인다. class Stack: def __init__(self): self.top = None #기본 값 #제일 위의 값을 새로운 노드로 교체 def push(self, value): self.top = Node(value, self.top) #제일 위의 값 꺼내고 그 값..