본문 바로가기

Java/Data structure(자료구조)5

Graph class 만들기! 안녕하세요 ☺️ 지난번에 알아보았던 Graph! 그렇다면 코드로는 어떻게 나타낼 수 있는지 알아보겠습니다. 크게 Adjacency matrix(인접 행렬)와 Adjacency list(인접 리스트)가 있었는데, 두 가지 모두 코드로 설계해보겠습니다. 먼저! 코드를 작성하기 전에 Graph에는 어떤 것들이 필요한 지 생각해 보면 작성하기 훨씬 수월합니다. 1) Graph를 구성하는 것에는 Vertex가 있죠 2) 또, vertex들을 연결하는 edge가 있습니다. 그렇다면 1) vertex를 추가할 수 있는 코드 2) edge를 추가할 수 있는 코드 이렇게 두개는 필수적으로 들어가야 겠다는 사실을 인지하고 코드를 작성해주면 됩니다! Graph를 이루고 있는 것은 Vertex이죠. Vertex는 node입니.. 2022. 6. 1.
Non-linear(비선형)자료구조(2) - Graph(그래프) 안녕하세요! 이번 글에서는 또다른 비선형 자료구조인 graph에 대해 알아보겠습니다. 처음에 그래프라는 단어를 들었을 때, 코드로 그래프를 어떻게 표현한다는 거지 라는 생각과 엄청나게 개념이 복잡할 수도 있다는 무서움이 있었습니다.😂 그런데 막상 알아보니 크게 두려워할 존재는 아니었습니다.☺️ 그래프는 아래 그림과 같은 형태를 띄는 데이터 구조를 뜻합니다. 트리와 유사하게 노드가 있고, 노드들을 연결하는 edge가 있죠? 구성 요소는 유사한데, 트리와는 조금 다른 것 같습니다. 한번 그림으로 tree와 차이점을 살펴보도록 하겠습니다. 이렇게 양옆에 두고 보니 좀 더 차이점이 명확하게 보이죠? 가장 크게 눈에 띄는 점은 트리는 일방향인 반면에 그래프는 루프 형태가 가능하다는 것입니다. Tree에서 node.. 2022. 6. 1.
Tree 구조 코드로 구현해보기 안녕하세요! 이번에는 지난번에 알아본 tree 구조를 어떻게 코드로 나타내는 것인지 알아보겠습니다. 두근두근 생각보다 굉장히 간단합니다. 저는 직접 노드와 노드를 잇는 간선까지 표현을 해서 직접 트리 모양을 그려내는 것인 줄 알았는데, 그건 아니고 각 노드에 연결된 노드 정보를 저장해주는 형식으로 구현이 되더라구요. 무슨 말인지 직접 코드로 보도록 하겠습니다. Tree 구조를 코드로 표현하는 핵심은 Node class를 만들어 주는 것입니다. 데이터를 담고 있는 각 노드를 객체로 만들어 주는 것이죠! Node class는 굉장히 간단합니다. 1 2 3 4 5 6 7 8 9 10 11 12 public class Node { int value; //최대 세개의 child node Node left; Nod.. 2022. 5. 29.
Non-linear(비선형)자료구조(1) - Tree, BinaryTree와 BST 지금까지 배운 배열, 스택, 큐등은 모두 linear(선형) 구조입니다. 선형 구조라고 하면 데이터가 일렬로 늘어서 있는 형태를 의미합니다. [1, 2, 3, 4, 5] 이런식으로요! 이번에 알아볼 tree구조 같은 경우는 non-linear(비선형 구조)에 해당하는 대표적인 데이터 구조입니다. Tree에도 몇가지 종류가 있는데, 가장 기본적인 tree, binary tree(바이너리 트리) 그리고 binary search tree(BST, 바이너리 서치 트리)에 대해 알아보도록 하겠습니다. 데이터 구조의 형태가 마치 나무를 거꾸로 돌려놓은 듯한 모습이라고 하여 트리라고 부릅니다. 트리 구조에서 알고 있어야 할 명칭들이 몇가지 있는데 하나씩 알아보겠습니다. 먼저, 각각의 데이터를(위 그림에서 동그라미 부.. 2022. 5. 28.
Data structure(자료구조)란? - Stack & Queue(스택과 큐) Data structure(DS)는 컴퓨터에서 데이터를 특정한 구조로 정리하여 데이터를 효율적으로 사용하기 위한 방법을 의미합니다. 자료구조의 종류는 다양한데, 지금까지 배워본 array나 collection framework에서 다룬 collection, map 등도 다 자료구조에 해당합니다! 생각해보면 각 자료구조들의 특징과 사용 방법이 조금씩 달랐습니다. 다량의 데이터를 한데 모아둔 것에 그치지 않고 데이터를 어떤 식으로 저장하고 이용할지 차이를 두었기 때문입니다. 이미 좋은 자료 구조들이 만들어져 있으니, 상황에 적절한 자료구조를 선택해서 사용할 수 있도록 하면 되겠습니다. ☺️ 이미 다룬 적이 있는 Array, LinkedList, Set은 제외하고 Stack, Queue, Tree, Graph.. 2022. 5. 27.
반응형