kwon's Blog

개발 블로그

너비 우선 탐색(Breadth First Search, BFS) 알고리즘

Algorithm

드디어 정렬 알고리즘이 끝나고 탐색 알고리즘이다. 이번 포스팅에서는 탐색을 할 때 너비를 우선으로 하여 탐색을 수행하는 탐색 알고리즘에 대해 알아보자. 너비 우선 탐색(Breadth First Search, BFS) 너비 우선 탐색(Breadth-first search, BFS)은 맹목적 탐색방법의 하나로 시작 정점을 방문한 후 시작 정점에 인접한 모......

C++ STL (라이브러리)

C/C++

STL 이란? Standard Template Library의 약자로서 C++에서 제공하는 템플릿 기반 표준 라이브러리이다. 프로그램에 필요한 자료구조와 알고리즘을 Template로 제공하는 라이브러리 STL라이브러리는 크게 STL 컨테이너(Container)와 STL 알고리즘(Algorithm)으로 구성되어 있다. STL 컨테이너(Container......

계수 정렬(Counting Sort) 알고리즘

Algorithm

이번 포스팅에서는 계수 정렬(Counting Sort) 에 대해 알아보겠다. 지금까지 선택 정렬, 버블 정렬, 삽입 정렬, 퀵 정렬, 병합 정렬, 힙 정렬을 공부해 보았다. 이 중 가장 빠른 정렬 알고리즘의 시간 복잡도는 O(N*logN)이었다. 이번에 배울 계수 정렬은 시간 복잡도가 O(N)이다. 하지만 데이터의 범위에 대해 조건이 있는 경우만 아주......

힙 정렬(Heap Sort) 알고리즘

Algorithm

이번 포스팅에서는 힙 정렬(Heap Sort) 에 대해 알아보겠다. 힙 정렬은 병합 정렬과 퀵 정렬만큼 빠른O(NlogN) 정렬 알고리즘이다. 힙 정렬은 힙 트리 구조(Heap Tree Structure)를 이용하는 정렬 방법이다. 힙 정렬(Heap Sort) 힙 정렬(Heapsort)이란 최대 힙 트리나 최소 힙 트리를 구성해 정렬을 하는 방법으로서......

병합 정렬(Merge Sort) 알고리즘

Algorithm

이번 포스팅에서는 병합 정렬(Merge Sort) 에 대해 알아보겠다. 병합 정렬도 퀵 정렬과 마찬가지로 ‘분할 정복’방법을 채택한 알고르즘이며 결과적으로 퀵 정렬과 동일하게 O(N*logN)의 시간복잡도를 가진다. 퀵 정렬은 피벗 값에 따라서 편향되게 분할할 가능성이 있다는 점에서 최악의 경우 O(N^2)의 시간 복잡도를 가지지만 병합 정렬은 정확히......

삽입 정렬(Insertion Sort) 알고리즘

Algorithm

이번에는 삽입 정렬에 대해 알아보겠다. 앞서 다루었던 정렬 알고리즘과 같은 시간복잡도인 O(N^2)을 가진다. 삽입 정렬(Selection Sort) 삽입 정렬(揷入整列, insertion sort)은 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다. 출처 -......

퀵 정렬(Quick Sort) 알고리즘

Algorithm

이전까지 봤던 정렬 알고리즘은 모두 시간복잡도 O(N^2)를 가지는 알고리즘이었다. 이러한 시간복잡도를 가지는 알고리즘은 사실상 데이터의 갯수가 커지면 일반적인 상황에서 사용하기가 매우 어렵다. 그렇기 때문에 더욱 빠른 알고리즘이 필요한데 그 대표적인 빠른 알고리즘이 퀵 정렬 알고리즘이다. 퀵 정렬(Quick Sort) 퀵 정렬은 분할 정복(divid......

버블정렬(Bubble Sort) 알고리즘

Algorithm

저번 포스팅에서는 선택정렬에 대해 공부해보았고 이번에는 버블 정렬에 대해 알아보겠다. 마찬가지로 일련의 숫자들을 오름차순으로 정렬하는 문제이다. 버블 정렬 거품 정렬(Bubble sort)은 두 인접한 원소를 검사하여 정렬하는 방법이다. 시간 복잡도가 O(n^2)로 상당히 느리지만, 코드가 단순하기 때문에 자주 사용된다. 원소의 이동이 거품이 수면으로......

선택정렬(Selection Sort) 알고리즘

Algorithm

이제 종강도 했으니 알고리즘 공부를 다시 시작해보려 한다. 유튜버 나동빈님의 강의를 보면서 하나씩 천천히 정리해 나가도록 해보자. 일반적으로 알고리즘을 공부할 때 가장 먼저 풀어보는 문제는 정렬 문제인데, 왜냐면 정렬만큼 알고리즘의 효율성 차이를 극명하게 보여주기 때문이라고 한다. 그래서 여러가지의 정렬 알고리즘을 먼저 배우고 알고리즘의 시간 복잡도에......

디지털 영상처리 - Add Noise

ImageProcessing

Add Noise1234567891011121314151617181920212223242526272829303132333435363738394041424344454647double uniform(){ return((double)(rand() & RAND_MAX) / RAND_MAX - 0.5);}double gaussian()......