본문 바로가기
728x90

Algorithm8

[Algorithm] 우선 순위 큐 Swift 구현 [Algorithm] 우선 순위 큐 Swift 구현 익히 알려져 있다시피 Swift는 우선 순위 큐가 구현되어 있지 않다. 직접 구현을 해야 우선순위 큐를 활용할 수 있는데 코딩테스트를 볼 때 이는 굉장히 귀찮음으로 다가온다. 미리 기록해놓고 나중에 써먹던지.. 다시와서 보는 용도로 포스팅을 한다. import Foundation struct PriorityQueue { var heap: Heap var count : Int { return heap.count } var isEmpty : Bool { return heap.isEmpty } init(_ elements: [T] = [], _ sort: @escaping (T, T) -> Bool) { heap = Heap(elements: elements.. 2024. 4. 4.
[Algorithm] 기수 정렬(Radix Sort) 알고리즘(Swift 구현) [Algorithm] 기수 정렬(Radix Sort) 알고리즘(Swift 구현) 1. 기수 정렬이란? 기수 정렬은 계수 정렬과 비슷한 면이 있다. 계수 정렬은 인덱스를 활용해서 새로운 배열을 만들어 차례로 정렬을 시켜주는 알고리즘인데, 기수정렬은 이와 비슷하게 비교연산을 수행하지 않고 데이터의 각 자릿수를 낮은 자리수부터 가장 큰 자리수까지 올라가면서 정렬을 수행해준다. 그렇기 때문에 문자열에도 적용이 가능한 정렬방법이다. 하지만 '자릿수'가 존재하지 않는다면 데이터를 기수정렬로 정렬하는 것이 불가능하다. 2. 기수 정렬 var array = [51, 3(1), 29, 3(2), 33, 105] 가 있다고 가정해보자! (3이 2개가 있는데 이는 안정 정렬인지를 보기 위함이다. 그냥 둘 다 정수 3으로 생.. 2023. 3. 8.
[Algorithm] 힙 정렬(Heap Sort) 알고리즘(Swift 구현) [Algorithm] 힙 정렬(Heap Sort) 알고리즘(Swift 구현) 이전에 한 번 힙(Heap)에 대해 알아본 적이 있다. 얄팍한 지식으로 정리를 했었는데, 오늘은 그 자료구조 힙을 가지고 정렬을 하는 방법에 대해 알아볼 것이다. 2022.05.15 - [Computer Science] - [자료구조] Heap 기초 개념 알아보기(python) [자료구조] Heap 기초 개념 알아보기(python) [자료구조] Heap 기초 개념 알아보기(python) 살펴볼 주요 개념: 더보기 - 힙이란? - 힙을 충족하는 트리 형태 - 힙 직접 구현 1. 힙이란? 힙 성질(heap property)을 만족하는 이진트리(Binary Tree)이다. * 힙 masterpiece-programming.tistor.. 2023. 2. 22.
[Algorithm] 안정 정렬과 불안정 정렬의 차이점 [Algorithm] 안정 정렬과 불안정 정렬의 차이점 2023.01.19 - [Algorithm] - [Swift] 프로그래머스 문자열 내 마음대로 정렬하기(lv. 1) [Swift] 프로그래머스 문자열 내 마음대로 정렬하기(lv. 1) [Swift] 프로그래머스 문자열 내 마음대로 정렬하기(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12915 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스 masterpiece-programming.tistory.com 드디어 이것에 대한 답을 어느정도 이해하고 포스팅할 시간이 왔다. 이전에 품었던 의문이었다. 이 부분은 안정 정렬과 불안정 정렬의 정의를.. 2023. 2. 12.
[Algorithm] 퀵 정렬, 병합 정렬 알고리즘(Swift 구현) [Algorithm] 퀵 정렬, 병합 정렬 알고리즘(Swift 구현) 퀵 정렬(Quick Sort)은 많이 사용되는 알고리즘이다. 더불어 병합 정렬(Merge Sort)도 많이 쓰인다. 두 정렬 알고리즘은 삽입, 선택 정렬보다 훨씬 빠른 속도로 정렬되기 때문에 대부분의 프로그래밍 언어에서 정렬 라이브러리에서 활용되기도 한다. 현재 정렬 알고리즘의 근간이 되는 두 정렬을 이번 포스팅에서는 알아볼 것이다. 1. 퀵 정렬(Quick Sort) 1) 정의 기준 데이터를 설정하고 그 기준보다 큰 데이터와 작은 데이터의 위치를 바꾸는 정렬 방법 2) 설명 (1) 과정 설명 정의만으로는 이해하기가 어렵다. 상세히 설명을 해보겠다. 퀵 정렬은 '분할 정복' 방법으로 리스트를 정렬하는 것이다. (오름차순 기준) (1) .. 2023. 2. 11.
[Algorithm] 선택 정렬, 삽입 정렬 알고리즘(Swift 구현) [Algorithm] 선택 정렬, 삽입 정렬 알고리즘(Swift 구현) 정렬 알고리즘. 최근 Swift로 프로그래머스 알고리즘 문제를 풀어보고 있던 중, 정렬에 대한 궁금증이 도졌다. Swift의 내장함수 sorted()가 바로 Tim sort 방식으로 정렬을 한다고 하는데, 제대로 이해를 하지 못했다. 그래서 예전에 정렬 알고리즘을 얄팍하게 공부해서 한 번 포스팅 한 적이 있었지만, 이번엔 더 자세하게, 이해가 될 수 있을 정도로 알고리즘을 파헤쳐 보기로 하였다. 1. 정렬 알고리즘이 필요한 이유? 정렬(Sorting) : 데이터를 특정한 기준에 따라서 순서대로 나열하는 것 우리가 일상생활에서도 많이 사용하는 알고리즘이다. 어떤 것들을 차례대로 배치해놓아야 일의 순서가 쉬워지는 것들이 있다. 예를 들어.. 2023. 2. 7.
728x90