목록자료구조 (4)
GGURUPiOS

안녕하세요 이번시간에는 이진탐색트리에 대해 알아보도록 하겠습니다. 일단 알아보기 전에, Tree 구조를 알아야 합니다 Tree 란? 트리는 계층적 관계를 나타냅니다. 트리는 노드로 구성되고, 노드는 서로 연결되어 있습니다. 아래와 같이 나타냅니다. 트리 구조 특징 - 자식노드는 특정 노드 아래의 노드이며 부모노드는 그위의 노드이다. - 노드에는 항상 하나의 보무노드만 있지만, 여러개의 자식노드를 가질 수 있다. - 부모가 없는 노드는 루트노드라고 함 - 트리의 포인터(가르키는 방향이라고 생각)는 순환이 아님 -> 즉 위에서 아래로 뻗어나가는 구조이지, 다시 위로 갈 수는 없음 이러한 구조를 그래프(Graph)라고 하고, 트리는 사실 그래프의 아주 단순한 형태 (연결리스트도 트리의 간단한 버전임) 그렇다면..
안녕하세요 이번시간에는 연결리스트에 대해 알아보고 스위프트로 구현해보도록 하겠습니다 연결리스트란? 연결리스트는 자료구조 중 하나 입니다. 데이터를 노드라 불리는 단위로 나눔 각 노드는 데이터, 다음노드를 가리키는 포인터로 이루어진 선형 데이터 구조 연결리스트와 배열의 차이점 저장방식: 배열은 순차적으로 메모리공간에 할당되고, 연결리스트는 불연속적으로 할당됨 삽입 및 삭제 연산: 배열은 특정 인덱스에 삽입, 삭제할 경우 해당 위치 이후의 모든 원소를 이동시켜야 함 반면, 연결리스트는 앞뒤 노드의 포인터를 조정하면 되므로 이동 필요 X 접근: 배열은 인덱스를 통한 접근이 빠르다. 하지만 연결리스트는 순차적으로 탐색해야 하기 때문에 속도가 느릴 수 있음 즉, 배열은 데이터 접근이 빠름 연결리스트는 데이터 삽입..
안녕하세요 이번시간에는 자료구조 큐에 대해 알아보도록 하겠습니다. 큐(Queue) ? 큐는 스택과 마찬가지로 데이터를 저장하고 꺼낼 수 있는 자료구조 입니다. 다만 스택과는 다르게 다른 특징들이 있습니다. 큐의 특징(용어) First-In-First-Out (FIFO) 구조: 가장먼저 추가된 요소가 가장 먼저 제거됨 (일종의 대기열) Enqueue, Dequeue: 요소를 추가, 제거 하는 작업 Front(peek), Rear (Head, Tail): 맨 앞의 요소, 맨 뒤의 요소 큐의 구현 struct Queue { private var queue: [T] = [] var count: Int { return queue.count } var isEmpty: Bool { return queue.isEmpt..
이번시간에는 Stack 자료구조 에 대해 알아보고 간단한 문제를 한번 풀어볼게요. 스택이란? 스택은 데이터를 특정순서대로 보관하는 자료구조 스택의 특징 Last-In, First-Out (LIFO) 구조를 가짐 예를들어) 앱을 사용할 때 네비게이션을 통해 A -> B -> C 식으로 화면에 들어갔을 때, 뒤로가기 버튼을 누르면 C화면이 사라지고 B화면이 다시 나온다. 이처럼 가장 마지막에 들어온 화면(데이터)가 가장 빨리 나가는 구조 스택의 구현 Swift에서 배열로 매우쉽게 구현가능함 (배열 메서드들로 해결가능) struct Stack { private var newArray: [Element] = [] mutating func push(_ element: Element) { newArray.appen..