- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 다트
- swift 코딩테스트
- programmer
- Algorithm
- 프로그래머스 level1
- 코딩테스트
- 정렬알고리즘
- 프로그래머스 swift
- 프로그래머스 레벨2
- 정렬 알고리즘
- 디자인패턴
- 감성에세이
- sort
- coding test
- swift split
- 정렬
- 알고리즘
- dart
- 자료구조
- swift 알고리즘
- programmers
- 스위프트디자인패턴
- 코테
- swift
- 디자인 패턴
- datastructure
- rxswift
- 프로그래머스
- Design Pattern
- 스위프트
목록CS(컴퓨터 과학)/Algorithm (13)
Bill Kim's Life...
알고리즘에서의 정렬 알고리즘의 종류와 그 특징에 대하여 살펴봅니다. #. 구독 대상 컴퓨터 및 소프트웨어 공학과 관련자 소프트웨어 관련 종사자 기타 컴퓨터 공학에 관심이 있으신 분 알고리즘의 개념을 잡고 싶으신 분 기타 소프트웨어 개발과 지식에 관심이 있으신 모든 분들 Introduction 본 글에서는 컴퓨터 과학에서 사용되는 정렬 알고리즘들에 대한 큰 특징들을 살펴보며 각 알고리즘 별로 공간 및 시간 복잡도에 대해서 서로 비교를 해봅니다. Sorting Algorithms 정렬 알고리즘은 크게 보면 형태나 방법에 따라 아래와 같이 분류될 수 있습니다. 그렇다면 대표적인 정렬 알고리즘의 대해서 하나씩 살펴보도록 하겠습니다. 버블정렬(Bubble Sort) 선택정렬(Selection Sort) 삽입정렬(..
알고리즘에서의 점근표기법 및 Big O Notation(빅 오 표기법)에 대하여 살펴봅니다. #. 구독 대상 컴퓨터 및 소프트웨어 공학과 관련자 소프트웨어 관련 종사자 기타 컴퓨터 공학에 관심이 있으신 분 알고리즘의 개념을 잡고 싶으신 분 기타 소프트웨어 개발과 지식에 관심이 있으신 모든 분들 점근 표기법(Asymptotic Notation) 컴퓨터 과학에서 알고리즘은 어떠한 문제를 최대한 빠르고 효율적으로 처리하기 위하여 사용합니다. 그러한 알고리즘에 대한 성능과 효율성을 측정하기 위해서 점근 표기법(Asymptotic Notation)이라는 것을 사용합니다. 점근 표기법에는 대표적으로 대문자 O 표기법, 대문자 오메가(Ω) 표기법, 대문자 세타(Θ) 표기법, 소문자 o 표기법, 소문자 오메가(ω) 표..
알고리즘에서의 Counting Sort(계수 정렬)에 대하여 Swift를 기반으로 하여 살펴봅니다. #. 구독 대상 컴퓨터 및 소프트웨어 공학과 관련자 소프트웨어 관련 종사자 기타 컴퓨터 공학에 관심이 있으신 분 알고리즘의 개념을 잡고 싶으신 분 기타 소프트웨어 개발과 지식에 관심이 있으신 모든 분들 Swift 언어를 활용하여 알고리즘을 공부해보고 싶으신 분들 Counting Sort(계수 정렬) Counting Sort(계수 정렬)는 기수(Radix)정렬과 마찬가지로 각 요소를 비교하지 않고 정렬하는 정렬 알고리즘입니다. 원소간을 직접 비교하지 않고 각 원소가 몇 개 등장하는지 갯수를 세서 정렬하는 방법입니다. 해당 정렬을 위해서는 모든 원소는 양의 정수여야 하는 큰 단점이 있습니다. 정렬에 드는 시간..
알고리즘에서의 Radix Sort(기수 정렬)에 대하여 Swift를 기반으로 하여 살펴봅니다. #. 구독 대상 컴퓨터 및 소프트웨어 공학과 관련자 소프트웨어 관련 종사자 기타 컴퓨터 공학에 관심이 있으신 분 알고리즘의 개념을 잡고 싶으신 분 기타 소프트웨어 개발과 지식에 관심이 있으신 모든 분들 Swift 언어를 활용하여 알고리즘을 공부해보고 싶으신 분들 Radix Sort(기수 정렬) Radix Sort(기수 정렬)는 각 요소를 비교하지 않고 정렬하는 특별한 정렬 알고리즘입니다. 각 자리수에 해당하는 버킷을 준비하고 1의 자리부터 제일 큰 수의 자리수까지 넣다 뺏다를 반복하여 정렬하는 알고리즘입니다. 시간 복잡도가 최악과 최고 모두 O(n)이라는 말도 안되는 속도를 가지고 있지만 많은 양의 저장 공간을..
알고리즘에서의 Shell Sort(쉘 정렬)에 대하여 Swift를 기반으로 하여 살펴봅니다. #. 구독 대상 컴퓨터 및 소프트웨어 공학과 관련자 소프트웨어 관련 종사자 기타 컴퓨터 공학에 관심이 있으신 분 알고리즘의 개념을 잡고 싶으신 분 기타 소프트웨어 개발과 지식에 관심이 있으신 모든 분들 Swift 언어를 활용하여 알고리즘을 공부해보고 싶으신 분들 Shell Sort(쉘 정렬) Shell Sort(쉘 정렬)는 ‘Donald L. Shell’이라는 사람이 제안한 정렬 알고리즘으로서 삽입 정렬을 보완한 알고리즘입니다. 삽입 정렬이 어느 정도 정렬된 배열에 대해서는 대단히 빠른 것에 착안하여 고안된 알고리즘으로서 기본 삽입 정렬보다 빠른 속도로 동작합니다. 쉘 정렬의 큰 핵심은 데이터를 일정한 수의 부분..
알고리즘에서의 Heap Sort(힙 정렬)에 대하여 Swift를 기반으로 하여 살펴봅니다. #. 구독 대상 컴퓨터 및 소프트웨어 공학과 관련자 소프트웨어 관련 종사자 기타 컴퓨터 공학에 관심이 있으신 분 알고리즘의 개념을 잡고 싶으신 분 기타 소프트웨어 개발과 지식에 관심이 있으신 모든 분들 Swift 언어를 활용하여 알고리즘을 공부해보고 싶으신 분들 Heap Sort(힙 정렬) Heap Sort(힙 정렬)는 힙 트리를 활용하여 데이터를 정렬을 하는 정렬 알고리즘입니다. 힙 정렬을 이해하기 위해서는 기본적으로 이진 트리 구조와 최대 힙에 대한 이해가 필요합니다. 기본 동작 기본적인 알고리즘의 컨셉을 살펴보면 아래와 같습니다. 1. 주어진 데이터를 최대 힙 배열로 만든다. 2. 힙에서 최대값(첫번째 요소)..
알고리즘에서의 Quick Sort(퀵 정렬)에 대하여 Swift를 기반으로 하여 살펴봅니다. #. 구독 대상 컴퓨터 및 소프트웨어 공학과 관련자 소프트웨어 관련 종사자 기타 컴퓨터 공학에 관심이 있으신 분 알고리즘의 개념을 잡고 싶으신 분 기타 소프트웨어 개발과 지식에 관심이 있으신 모든 분들 Swift 언어를 활용하여 알고리즘을 공부해보고 싶으신 분들 Quick Sort(퀵 정렬) Quick Sort(퀵 정렬)는 대표적인 분할, 정복 정렬 알고리즘으로서 최악의 경우는 O(n^2)이지만 평균적으로는 O(nlogn)으로서 병합 정렬보다 보편적으로 빠른 속도를 가진 알고리즘입니다. 특정 값(Pivot)을 선택한 후 좌우로 작은 수와 큰 수 리스트를 나누어 최종 배열을 합치는 방법으로 정렬을 하는 방식입니다...
알고리즘에서의 Merge Sort(병합 정렬)에 대하여 Swift를 기반으로 하여 살펴봅니다. #. 구독 대상 컴퓨터 및 소프트웨어 공학과 관련자 소프트웨어 관련 종사자 기타 컴퓨터 공학에 관심이 있으신 분 알고리즘의 개념을 잡고 싶으신 분 기타 소프트웨어 개발과 지식에 관심이 있으신 모든 분들 Swift 언어를 활용하여 알고리즘을 공부해보고 싶으신 분들 Merge Sort(병합 정렬) Merge Sort(병합 정렬)는 삽입이나 선택 정렬보다 빠른 정렬 알고리즘으로서 분할 및 정복 과정을 통하여 동작하는 알고리즘입니다. 병합 정렬은 재귀 용법을 활용할 정렬 알고리즘으로서, 전체 원소를 가장 작은 단위로 분할한 후 분할한 원소를 다시 병합하면서 정렬하는 분할정복(Divide and Conquer) 방식을 ..