Studies/자료구조 2

[자료구조] Swift 로 Heap 구현하기

[자료구조] Swift 로 Heap 구현하기 Heap 은 이진트리 형태의 자료구조로 최대값 및 최소값을 빠르게 탐색할수 있도록 설계되었습니다. Heap 에는 2가지 종류가 있는데, 부모노드의 키값이 자식노드의 키값보다 항상 큰 경우는 Max Heap, 부모노드의 키값이 자식노드의 키값보다 항상 작은 경우는 Min Heap 이라고 합니다. 그렇기 때문에 Max Heap 의 루트노드에는 항상 최대값이 저장되고 Min Heap 의 루트노드에는 항상 최소값이 저장됩니다. Heap 은 이진트리 형태로 구현되었기 때문에 삽입과 삭제에서 O(logN) 의 시간복잡도를 가집니다. 삽입 MaxHeap 을 예로 들어보겠습니다. Heap 의 삽입은 트리의 가장 바깥쪽 노드에서 시작됩니다. 먼저 삽입할 노드를 트리의 가장 바..

[자료구조] Swift 로 Queue 구현하기

[자료구조] Swift 로 Queue 구현하기 코딩테스트 문제를 풀다보면 Queue 자료구조를 이용해야하는 경우가 종종 있습니다. 모든 경우에서는 잘 모르겠지만... Queue 자료구조를 import 해서 사용할 수 있는 Java 와 Python 등과는 달리 Swift 에서는 Queue 자료구조를 제공하고 있지 않습니다. 저는 그래서 코딩테스트 문제를 풀며 필요한 자료구조들을 struct 로 구현해둔 다음 필요할때마다 가져다 사용하는 편입니다. 오늘은 그 중 Queue 를 구현하는 2가지 방법에 대해 알아보겠습니다. Array 를 Queue 처럼 사용하기 Array 의 내장 메소드 중에 removeFirst() 와 removeLast() 등이 존재하기 때문에 이를 잘 활용한다면 사실 Queue 와 비슷한..