CS/자료구조 6

[자료구조] Binary Search Tree(이진 탐색 트리) with Swift - 구현

안녕하세요. 개발하는 정주입니다. 오늘은 "Binary Search Tree(이진 탐색 트리) with Swift"을 정리하였습니다. 지난 포스팅에서는 트리의 개념에 대해 배웠습니다. 이번 포스팅에서는 Swift를 이용해 직접 구현해 보았습니다. 틀린 점이 있다면 댓글로 알려주세요! Swift로 이진 탐색 트리 구현하기 Swift로 이진 탐색 트리를 구현해보겠습니다. 트리의 구조를 보면 알겠지만 연결 리스트를 응용하여 구현합니다. 코드는 맨 아래 전체 코드도 첨부하였고 깃허브에서 확인도 가능합니다. 트리 출력하기 트리를 출력하는 코드는 다른 분의 좋은 코드를 가져왔습니다. devmjun.github.io/archive/BinarySearchTree extension BinarySearchTree { fu..

CS/자료구조 2022.05.28

[자료구조] Tree(트리) with Swift - 개념

안녕하세요. 개발하는 정주입니다. 오늘은 "Tree(트리) with Swift"을 정리하였습니다. 트리는 포스팅 하나에 다 쓰기에는 중요한 내용이 많더라고요. 그래서 이번 트리 포스팅에서는 통상적인 트리의 개념과 이진 트리에 대해 다루고 다음 포스팅에서 Swift를 이용해 구현해보겠습니다. B 트리와 B+ 트리는 따로 포스팅할 예정입니다. 트리란? 트리란 노드(Node)와 간선(Edge)을 이용해 사이클을 이루지 않도록 구성한 데이터 구조입니다. 비선형 자료구조로 계층적 관계를 표현하는데 자주 사용합니다. (ex. 디렉터리, 조직도) 트리에 값을 아무렇게나 삽입하면 링크드 리스트와 다른 것이 없지만 트리를 잘! 만들면 자료의 삽입, 삭제 속도가 빠르고 참조와 탐색 속도가 사용 가능할 정도입니다. 따라서 ..

CS/자료구조 2022.05.28

[자료구조] Linked List(링크드 리스트) with Swift

안녕하세요. 개발하는 정주입니다. 오늘은 "Linked List(링크드 리스트)"을 정리하였습니다. 최근에 코딩 테스트를 준비하기 위해 알고리즘 포스팅만 잔뜩 적었는데요. 오랜만에 자료구조를 포스팅 하려니 설렙니다. Singly linked list(링크드 리스트)란? 링크드 리스트(연결 리스트)는 노드가 연결되어 있는 자료구조입니다. 각 노드는 다음 노드를 가리키는 포인터와 노드의 데이터를 가지고 있습니다. 이 포스팅에서 수식어가 없는 링크드 리스트는 단방향 링크드 리스트를 의미합니다. 데이터가 연속적으로 연결되어 있는 자료구조이기 때문에 배열과 많이 비교가 되는데요. 저도 짧게 다뤄보며 이전에 작성한 큐를 링크드 리스트로 구현했을 때의 장단점도 살펴보겠습니다. 배열과 링크드 리스트의 차이 배열 앞서 ..

CS/자료구조 2022.05.10

[자료구조] Queue(큐) with Swift

안녕하세요. 개발하는 정주입니다. 오늘은 "Queue"를 정리하였습니다. 포스팅 하단에 Swift로 Queue를 구현하고 dequeue의 시간복잡도 개선, 테스트도 함께 진행했습니다. Queue란? Queue는 Stack과 함께 기본적인 자료 구조 중 한가지입니다. 먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out) 구조로 일렬로 이루어진 줄을 생각하면 연상이 쉽습니다. 먼저 줄을 선 사람이 먼저 나갈 수 있는 것처럼 Queue도 먼저 넣은 데이터가 먼저 나오는 것입니다. Queue의 동작 Queue는 크게 3가지 동작을 합니다. Enqueue : Queue의 맨 뒤에 원소를 추가합니다. Dequeue : Queue의 맨 앞 원소를 삭제합니다. Peek : 맨 앞에 위치한 ..

CS/자료구조 2022.04.09

[자료구조] Array(배열) with Swift

안녕하세요. 개발하는 정주입니다. 오늘은 "Array(배열)"을 정리하였습니다. 배열이란? 배열은 대부분의 프로그래밍 언어에 포함된 선형 자료 구조인데요. 동일한 데이터 타입(연관된 데이터)을 하나의 변수에 순서대로 나열한 뒤 메모리에 연속으로 저장해 만든 자료 구조입니다. 데이터를 순서대로 나열한다는 점과 메모리에 연속으로 저장이 된다는 점이 배열의 포인트입니다. 배열은 동일한 데이터 타입을 저장하기 때문에 다른 데이터 타입을 담을 수는 없습니다. Int Array에 Double이나 String을 넣지 못하는 것이 예시입니다. 그런데 Swift에서는 Any 타입을 이용해 여러 타입을 하나의 배열에 담을 수도 있죠? 저도 배열을 조사하며 이것에 대해 궁금해져서 찾아본 결과! Any 타입의 배열은 Any ..

CS/자료구조 2022.04.08

[자료구조] Stack(스택) with Swift

안녕하세요. 개발하는 정주입니다. 오늘은 Stack(스택)을 정리했습니다. Stack이란? Stack이란 "어떤 것을 쌓는다"는 것을 표현하기 위해 만든 선형 자료 구조로 배열과 같지만 특정 기능에 특화된 배열입니다. 원소를 쌓는 것에 중점을 둔 배열인 셈이죠. 따라서 Stack을 활용하는 곳은 무언가를 쌓고 맨 위의 것을 빼는 구조라는 것을 추상적으로 알 수 있게 됩니다. 자료구조는 기능 구현도 중요하지만 이러한 개념을 파악하는 것도 중요한 점이라고 생각하네요. Stack 특성 Stack의 가장 중요한 특성은 "LIFO"입니다. (리포가 아닌 라이포라고 읽습니다) LIFO란 Last In First Out의 줄임말로 마지막에 들어온 원소가 가장 먼저 나간다는 의미입니다. 택배를 쌓으면 맨 위에 있는 택..

CS/자료구조 2022.04.08
반응형