본문 바로가기

알고리즘3

[알고리즘][검색] 이진 탐색(Binary Search) - Python 1. 이진 탐색(Binary Search) 이란? - [나무위키] 이진 탐색(Binary Search)는 오름차순으로 정렬된 리스트를 같은 크기의 두 부분 리스트로 나누고 필요한 부분에서만 탐색하도록 제한하여 원하는 원소를 찾는 알고리즘입니다. 리스트의 중간 부분에 찾는 원소가 있는지 확인하고, 없으면 위쪽에 있는지 아래쪽에 있는지 판단하여 맨 앞부터 검색하거나 중간부터 검색합니다. - 대학생때 많이들 하는 '업다운' 게임과 같은 방식입니다! 2. 이진 탐색의 파이썬 코드 2.1 재귀함수로 구현한 이진 탐색 def binary_search(array, target, start, end): if start > end: return None mid = (start + end) // 2 if array[mid.. 2021. 7. 16.
[알고리즘][정렬] ② 삽입 정렬 (Insertion Sort) - Python 2021.07.10 - [알고리즘(Algorithm)] - [알고리즘][정렬] ① 선택 정렬 (Selection Sort) - Python [알고리즘][정렬] ① 선택 정렬 (Selection Sort) - Python 이 글은 '이것이 코딩테스트다(나동빈 저)'를 공부하면서 정리한 글입니다. 1. 정렬(Sorting)이란? - 정렬은 '특정한 기준에 따라서 데이터를 순서대로 나열하는 것'을 말합니다. 흔히 우리가 알고있 hyen4110.tistory.com 이전 글에서는 선택정렬(Selection Sort)에 대해서 알아보았습니다. 선택정렬은 가장 원시적인 방법으로 복잡도가 O(N²)에 해당하여 데이터가 늘어날수록 느려지는 단점이 있었습니다. 이번 글에서는 선택정렬처럼 직관적으로 이해하기 쉬우면서 좀 .. 2021. 7. 10.
[알고리즘][정렬] ① 선택 정렬 (Selection Sort) - Python 이 글은 '이것이 코딩테스트다(나동빈 저)'를 공부하면서 정리한 글입니다. 1. 정렬(Sorting)이란? - 정렬은 '특정한 기준에 따라서 데이터를 순서대로 나열하는 것'을 말합니다. 흔히 우리가 알고있는 '오름차순', '내림차순'이 이에 해당됩니다. - 정렬 알고리즘은 단순히 데이터를 정렬하는 것을 넘어 '이진탐색(Binary Search)'를 가능하게 하는 일명 전처리 단계와 같습니다. - 정렬 알고리즘에는 많은 종류가 존재하지만, 코딩테스트에 많이 사용되는 대표 4인방(선택 정렬, 삽입 정렬, 퀵 정렬, 계수정렬)만 다루도록 하겠습니다. 2. 선택 정렬(Selection Sort) 2.1 선택 정렬의 원리 - 선택 정렬(Selection Sort)에서는, 데이터가 무작위로 있을 때에 가장 작은 데.. 2021. 7. 10.