본문 바로가기

COMPUTER SCIENCE/Algorithmic & Data Structure

(31)
[Section 4] 그래프 알고리즘 _ 인접 행렬(Adjacency matrix) 자료구조와 알고리즘 목차 보기 [INTRO] 자료구조와 알고리즘 자료구조와 알고리즘에 대해서... 자료구조는 프로그래밍에서 사용되는 데이터를 어떻게 표현하는 것인가에 대한 컴퓨터 과학 분야이다. 그리고 알고리즘은 표현된 데이터를 계산하는 방법에 hookspedia.tistory.com 0. INTRO 인접 행렬 방식으로 구현한 그래프는 빽빽한 그래프에서 더 유리하다는 장점을 가지고 있다. 그렇다면, 그래프를 인접 행렬 방식으로 구현하는 알고리즘에 대해 배워보자. 1. 리스트를 집합으로 활용하기 _ 벌텍스와 초기화 알고리즘 그래프를 구현하기 위해서 벌텍스 V의 집합을 구현하고, 각각의 원소는 v로 초기화하여 리스트에 담아보는 알고리즘에 대해 배워보자. 이 알고리즘에는 두 개의 클래스를 구현하고 이를 연계하..
[Section 4] 그래프 구현 알고리즘의 종류 자료구조와 알고리즘 목차 보기 [INTRO] 자료구조와 알고리즘 자료구조와 알고리즘에 대해서... 자료구조는 프로그래밍에서 사용되는 데이터를 어떻게 표현하는 것인가에 대한 컴퓨터 과학 분야이다. 그리고 알고리즘은 표현된 데이터를 계산하는 방법에 hookspedia.tistory.com 0. INTRO 이번에는 그래프의 알고리즘을 구현하기 전에 어떤 종류의 알고리즘이 사용되는지 알아보고, 각각의 특성 비교를 통해서 어떤 알고리즘을 구현할지 결정해보자. 1. 그래프 구현 알고리즘의 종류 _ 인접 행렬(Adjacency Matrix) 방식 그래프의 구현 알고리즘에 따라 자료 구조 상태가 달라진다. 예를 들어, 다음의 가중치가 없는 방향 그래프(Directed)를 참고로 하자. 왼쪽의 1,2,3,4로 구성된 벌..
[Section 4] 이진 트리 순회 알고리즘의 구현 _ 순회 기능의 종류 자료구조와 알고리즘 목차 보기 [INTRO] 자료구조와 알고리즘 자료구조와 알고리즘에 대해서... 자료구조는 프로그래밍에서 사용되는 데이터를 어떻게 표현하는 것인가에 대한 컴퓨터 과학 분야이다. 그리고 알고리즘은 표현된 데이터를 계산하는 방법에 hookspedia.tistory.com 0. INTRO 이전에 언급한 바와 같이 순회 기능은 이진트리의 주 ADT 중 하나이다. 하지만 순회 기능에도 다양한 용어가 사용된다. 따라서 이번에는 이진트리의 순회 기능의 용어와 그 개념에 대해 알아보고 알고리즘을 구현해보고자 한다. 참고로 이진트리의 구현을 위해서는 스택 알고리즘이 선행되어야 한다. 1. 순회(Traversal) 기능을 위한 함수 정리 순회 기능은 트리의 모든 노드로 접근하게 만들어주는 중요한 기능이다..
[Section 3] 스택 알고리즘 _ 배열 스택(Array Stack) 자료구조와 알고리즘 목차 보기 [INTRO] 자료구조와 알고리즘 자료구조와 알고리즘에 대해서... 자료구조는 프로그래밍에서 사용되는 데이터를 어떻게 표현하는 것인가에 대한 컴퓨터 과학 분야이다. 그리고 알고리즘은 표현된 데이터를 계산하는 방법에 hookspedia.tistory.com 0. INTRO 배열 스택(Array Stack)은 스택 중에서 가장 구현이 쉽고 간단하다는 특징을 가지고 있다. 이번에는 배열 스택 알고리즘을 구현하기 위해 필요한 ADT를 정리하고, 그 알고리즘을 구현화해보자. 1. 배열 스택 ADT 정리 스택 배열의 구현은 가장 먼저 팝과 푸쉬에 있다. 배열에 데이터를 삽입하고 삭제하는 기능이 주 ADT라 할 수 있겠다. 그리고 보조 ADT는 스택의 사이즈 혹은 탑 포인터의 위치 반환..
[Section 4] 노드 알고리즘 구현 _ 이진 트리(Binary Trees) 자료구조와 알고리즘 목차 보기 [INTRO] 자료구조와 알고리즘 자료구조와 알고리즘에 대해서... 자료구조는 프로그래밍에서 사용되는 데이터를 어떻게 표현하는 것인가에 대한 컴퓨터 과학 분야이다. 그리고 알고리즘은 표현된 데이터를 계산하는 방법에 hookspedia.tistory.com 0. INTRO 트리에 구성된 노드들이 각각 하나 이상의 아이(child) 노드를 가지거나, 없는 경우, 이진트리(Binary Trees)로 분류된다. 이진트리의 특성과 유형을 알아보고, 알고리즘을 구현해보자. 1. 이진트리의 특성과 유형 이진트리도 노드의 구성에 따라 크게 3가지 유형으로 나눌 수 있다. 이는 각각 완전 이진 트리(Complete Binary Tree), 가득찬 이진트리(Full Binary Tree) 그..
[Section 5] 힙(Heap)의 개념과 용어 정리 자료구조와 알고리즘 목차 보기 [INTRO] 자료구조와 알고리즘 자료구조와 알고리즘에 대해서... 자료구조는 프로그래밍에서 사용되는 데이터를 어떻게 표현하는 것인가에 대한 컴퓨터 과학 분야이다. 그리고 알고리즘은 표현된 데이터를 계산하는 방법에 hookspedia.tistory.com 0. INTRO 힙(Heap)은 트리(Tree)의 일종이지만, 일반적인 트리와 다르게 각 노드의 값은 그 노드의 아이(children) 노드 값과 비교하는 조건을 가지고 있다. 이것이 힙의 기본 개념이다. 이 기본 개념을 기반으로 힙을 더 자세히 이해해 보도록 하자. 1. 개념 이해 _ 힙 속성(Heap Property) 힙 속성은 힙의 특징을 결정짓는다. 그 특징은 트리의 노드 비교 조건과 높이 속성에 달려있다. 힙 속성..
[Section 5] 우선 순위 큐의 개념과 종류 &시간 복잡도 자료구조와 알고리즘 목차 보기 [INTRO] 자료구조와 알고리즘 자료구조와 알고리즘에 대해서... 자료구조는 프로그래밍에서 사용되는 데이터를 어떻게 표현하는 것인가에 대한 컴퓨터 과학 분야이다. 그리고 알고리즘은 표현된 데이터를 계산하는 방법에 hookspedia.tistory.com 0. INTRO 우선순위 큐는 일반적인 큐와 다르게 최솟값과 최댓값 원소를 찾아내는데 더 적합한 방식의 자료구조이다. 이것은 최댓값과 최솟값을 중심으로 삽입과 삭제를 구현화했기 때문인데, 우선순위 큐의 개념과 종류에 대해 자세히 알아보도록 하자. 1. 개념 이해 _ 우선순위 큐(Priority Queues) 큐는 FILO 혹은 LILO 방식으로 데이터를 일렬로 처리하기 때문에 데이터의 삽입 또는 삭제에 해당하는 시간 복잡도..
[Section 4] 그래프(Graph)의 개념 이해 _ 그래프 용어 정리 자료구조와 알고리즘 목차 보기 [INTRO] 자료구조와 알고리즘 자료구조와 알고리즘에 대해서... 자료구조는 프로그래밍에서 사용되는 데이터를 어떻게 표현하는 것인가에 대한 컴퓨터 과학 분야이다. 그리고 알고리즘은 표현된 데이터를 계산하는 방법에 hookspedia.tistory.com 0. INTRO 비-선형 자료구조는 자료가 순차적이지 않는 자료구조를 의미한다. 비-선형 자료구조는 대표적으로 트리와 그래프가 존재하는데, 이번에는 그래프 자료구조의 개념을 이해해보도록 하자. 1. 비-선형 자료구조 _ 그래프의 개념 트리 구조는 룻트가 가리키는 데이터의 출발이 시작이라면, 그래프 구조는 룻트가 없는 트리와 비슷한 구조를 갖는다. 물론 각 데이터들은 자료의 형태에 따라 포인터가 가리키는 노드가 달라진다. 다..
[Section 4] 트리(Tree)의 개념 이해 _ 트리 용어 정리 자료구조와 알고리즘 목차 보기 [INTRO] 자료구조와 알고리즘 자료구조와 알고리즘에 대해서... 자료구조는 프로그래밍에서 사용되는 데이터를 어떻게 표현하는 것인가에 대한 컴퓨터 과학 분야이다. 그리고 알고리즘은 표현된 데이터를 계산하는 방법에 hookspedia.tistory.com 0. INTRO 비-선형 자료구조는 자료가 순차적이지 않는 자료구조를 의미한다. 비-선형 자료구조는 대표적으로 트리와 그래프가 존재하는데, 이번에는 트리 자료구조 개념을 이해해보도록 하자. 1. 비-선형 자료구조 _ 트리의 개념 연결 리스트 자료구조에서 각 노드의 포인터가 가리키는 곳은 하나뿐이었다. 만약 데이터를 트리 형태로 저장하게 된다면, 각 노드의 포인터는 2개 이상의 노드를 지칭하게 된다. 다음의 그림을 참고하자...
[Section 3] 큐(Queue)의 종류와 개념 이해하기 자료구조와 알고리즘 목차 보기 [INTRO] 자료구조와 알고리즘 자료구조와 알고리즘에 대해서... 자료구조는 프로그래밍에서 사용되는 데이터를 어떻게 표현하는 것인가에 대한 컴퓨터 과학 분야이다. 그리고 알고리즘은 표현된 데이터를 계산하는 방법에 hookspedia.tistory.com 0. INTRO 선형 자료구조는 자료를 순차적으로 구성하였기 때문에 그 정보에 접근하기 위한 알고리즘은 역시 순차적이다. 이러한 선형 자료구조의 종류에는 리스트, 스택 그리고 큐가 존재한다. 만약 연결 리스트의 알고리즘 개념에 기반하여 자료 구조를 이해했다면, 지금 부터는 그 종류와 개념만으로 스스로 구현해 볼 수 있을 것이다. 이번 시간에는 큐(Queue)의 종류와 그 개념을 이해해 보도록 한다. 1. 큐 자료 구조의 이..
[Section 3] 스택(Stack)의 종류와 개념 이해하기 자료구조와 알고리즘 목차 보기 [INTRO] 자료구조와 알고리즘 자료구조와 알고리즘에 대해서... 자료구조는 프로그래밍에서 사용되는 데이터를 어떻게 표현하는 것인가에 대한 컴퓨터 과학 분야이다. 그리고 알고리즘은 표현된 데이터를 계산하는 방법에 hookspedia.tistory.com 0. INTRO 선형 자료구조는 자료를 순차적으로 구성하였기 때문에 그 정보에 접근하기 위한 알고리즘은 역시 순차적이다. 이러한 선형 자료구조의 종류에는 리스트, 스택 그리고 큐 존재한다. 만약 연결 리스트의 알고리즘 개념에 기반하여 자료 구조를 이해했다면, 지금 부터는 그 종류와 개념만으로 스스로 구현해 볼 수 있을 것이다. 이번 시간에는 스택(Stack)의 종류와 그 개념을 이해해 보도록 한다. 1. 스택 자료 구조의 ..
[Section 3] 연결 리스트의 종류와 개념 이해하기 자료구조와 알고리즘 목차 보기 [INTRO] 자료구조와 알고리즘 자료구조와 알고리즘에 대해서... 자료구조는 프로그래밍에서 사용되는 데이터를 어떻게 표현하는 것인가에 대한 컴퓨터 과학 분야이다. 그리고 알고리즘은 표현된 데이터를 계산하는 방법에 hookspedia.tistory.com 0. INTRO 선형 자료구조는 자료를 순차적으로 구성하였기 때문에 그 정보에 접근하기 위한 알고리즘은 역시 순차적이다. 이러한 선형 자료구조의 종류에는 리스트, 스택 그리고 큐 존재한다. 만약 연결 리스트의 알고리즘 개념에 기반하여 자료 구조를 이해했다면, 지금 부터는 그 종류와 개념만으로 스스로 구현해 볼 수 있을 것이다. 이번 시간에는 리스트의 종류와 그 개념을 이해해 보도록 한다. 1. 연결 리스트의 종류와 개념 _..