목록자료구조 (7)
Developer_Neo
그래프 (Graph) 란? 노드(node)와 그 노드를 연결하는 간선(edge)을 하나로 모아 놓은 자료 구조 노드 (Node): 위치를 말함, 정점(Vertex)라고도 함 간선 (Edge): 위치 간의 관계를 표시한 선으로 노드를 연결한 선 그래프 (Graph) 종류 무방향 그래프 (Undirected Graph) 방향이 없는 그래프 간선을 통해, 노드는 양방향으로 갈 수 있음 보통 노드 A, B가 연결되어 있을 경우, (A, B) 또는 (B, A) 로 표기 방향 그래프 (Directed Graph) 간선에 방향이 있는 그래프 보통 노드 A, B가 A -> B 로 가는 간선으로 연결되어 있을 경우, 로 표기 가중치 그래프 (Weighted Graph) 또는 네트워크 (Network) 간선에 비용 또는 ..
힙 (Heap) 트리를 기반으로 해 어떠한 목적에 따라 변환시킨 자료구조이다. 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree) 완전 이진 트리: 노드를 삽입할 때 최하단 왼쪽 노드부터 차례대로 삽입하는 트리 사용하는 이유 배열에 데이터를 넣고, 최대값과 최소값을 찾으려면 O(n) 이 걸림 이에 반해, 힙에 데이터를 넣고, 최대값과 최소값을 찾으면, O(logn) 이 걸림 우선순위 큐와 같이 최대값 또는 최소값을 빠르게 찾아야 하는 자료구조 및 알고리즘 구현 등에 활용됨 구조의 조건 각 노드의 값은 해당 노드의 자식 노드가 가진 값보다 크거나 같다. (최대 힙의 경우) 최소 힙의 경우는 각 노드의 값은 해당 노드의 자식 노드가 가진 값보다 크거나..
링크드(연결) 리스트(Linked List) 왜? 배열의 경우로 데이터를 넣었을 때 미리 공간을 정해놓아야한다. 만약 데이터가 너무 커서 공간을 넘어가서 데이터가 끊어지게 되면 안되기 때문에 연결리스트가 나오게 된 이유가 있다. - 노드를 연결시킨 자료구조 - 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조 위 그림처럼 데이터를 담고 있는 노드들이 연결되어 있는데, 노드의 포인터가 다음이나 이전의 노드와의 연결을 담당함. C언어에서는 주요한 데이터 구조이지만, 파이썬은 리스트 타입이 링크드 리스트의 기능을 모두 지원 노드(Node): 데이터 저장 단위 (데이터값, 포인터) 로 구성 포인터(pointer): 각 노드 안에서, 다음이나 이전의 노드와의 연결 정보를..
스택(Stack) 제한적으로 접근할 수 있는 나열 구조 (데이터를 제한적으로 접근할 수 있는 구조) 접근 방법은 언제나 목록의 끝에서만 일어난다 (한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조) 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조 LIFO(Last In, Fisrt Out) 또는 FILO(First In, Last Out) 데이터 관리 방식 LIFO: 마지막에 넣은 데이터를 가장 먼저 추출하는 방식 FILO: 처음에 넣은 데이터를 가장 마지막에 추출하는 방식 활용 컴퓨터 내부의 프로세스 구조의 함수 동작 방식 프로세스 메모리 구조 - stack 영역 컴퓨터에서 포인터라고 하는 자료의 위치 표시자와 넣고 빼는 명령어를 사용해서 스택을 이용 장단점 장점 구조가 단순해 구현이 쉽다..
큐(Queue) 먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out)구조로 저장하는 형식 또는 반대로 LILO(Last-In, Last-Out) 방식 넣는 데이터가 같은 자료형이 아니어도 됨. 표를 사러 일렬로 늘어선 사람들로 이루어진 줄을 말하기도 하며, 먼저 줄을 선 사람이 먼저 나갈 수 있는 상황을 연상하면 된다. (출처) 스택과 꺼내는 순서가 반대 장단점 데이터 접근, 삽입, 삭제가 빠르다. 큐 역시 스택과 마찬가지로 중간에 위치한 데이터에 대한 접근이 불가능하다 큐(Queue)의 핵심 연산 Enqueue 큐에 데이터를 넣는 기능 반환 X Dequeue 큐에서 데이터를 꺼내는 기능 데이터 반환 다른 연산들 QueueInit 큐의 초기화를 진행한다. (큐 생성 후 제일 ..
2022.01.16 - [분류 전체보기] - [python] 인덱싱(indexing), 슬라이싱(slicing) with 문자열, 리스트, 튜플 [python] 인덱싱(indexing), 슬라이싱(slicing) with 문자열, 리스트, 튜플 인덱싱(indexing) - 시퀀스 자료형인 문자열, 리스트, 튜플에 사용가능 - 시퀀스 자료형에 부여된 번호를 의미한다. 특징 양수 인덱스 앞에서부터 시작하는 것으로 0부터 시작 음수 인덱스 뒤에서부 devloper-dreaming.tistory.com 배열 연관된 데이터를 하나의 변수에 그룹핑해서 관리하기 위한 방법 같은 종류의 데이터를 효율적, 순차적으로 관리, 저장하기 위해 사용한다. 파이썬에서는 리스트자료형이 배열 기능을 제공한다. 장점 - 인덱스 번호로..
자료구조란 자료구조, 데이터 구조, data structure라고 불리고 대량의 데이터를 효율적으로 관리 할 수 있는 데이터의 구조를 의미합니다. 흔한 자료구조의 형태로 배열, 큐(Queue)나 스택(Stack) , 연결 리스트(Linked List), 트리(Tree), 힙(heap) ,해쉬 테이블등이 있다. 어떤 데이터구조를 사용하느냐에 따라 코드 효율이 달라진다. 왜 사용하는가, 어떤점이 좋은가, 어떻게 선택해야 하는가 왜 사용하는가(목적) 자료(data)를 더 효율적으로 저장, 관리하기 위해 사용합니다. 어떤점이 좋은가 목적에 따라 잘 선택된 자료구조는 실행시간을 단축시켜주거나 메모리 용량의 절약을 이끌어 낼 수 있습니다. 어떻게 선택해야하는가 자료의 처리를 보다 효율적으로 하기 위해서 자료구조의 ..