알고리즘 2

Binary search, 이진 탐색

이진 탐색에 대해 공부하였다. 파이썬의 리스트 자료구조에서, for문을 통해 첫번째 인덱스부터 마지막 인덱스까지 순차적으로 탐색을 하였다가는 시간 복잡도 문제를 문제를 벗어날 수 없게 된다. 이러한 문제를 해결하기 위하여, 이진 탐색 아이디어를 활용할 수 있다. 이진 탐색 이진 탐색이란, 리스트를 절반으로 쪼개어 탐색하는 과정이다. 0 1 2 3 4 5 6 7 8 9 라는 리스트가 있다고 할 때에, 찾고자 하는 수가 0~4와 5~9 중 어디에 있는 지를 파악하고, 만약 전자의 범위 내에 있다면 전자의 범위에서, 그 반대라면 후자의 범위 내에서 탐색하는 방법이다. 이러한 이진 탐색을 구현하는 방법은 두 가지 방법이 있는데, 하나는 재귀 함수를 이용하는 방법이고, 다른 하나는 반복문을 사용하는 방법이 있다...

그리디 알고리즘

그리디 알고리즘 그리디 알고리즘이란, 단순 무식하게 탐욕적으로 문제를 푸는 알고리즘이다. 달리 말해서, 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미한다. 정렬, 최단 경로 등의 알고리즘들은 그 사용법을 정확히 알고 있어야만 해결할 수 있다. 이와 달리, 그리디 알고리즘으로 분류되는 다익스트라 알고리즘을 제외하면, 그리디 알고리즘은 그 사용법을 굳이 외우지 않아도 풀 수 있을 가능성이 매우 높다. 그리디 알고리즘은 그 풀이법이 매우 다양하다. 그것은 즉, 그만큼 문제를 풀기 위한 창의력, 다른 말로는 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 아이디어를 요구한다는 의미와 같다. 그만큼 그리디 알고리즘은 다양한 유형의 문제를 풀어보며 그 유형에 익숙해질 필요가 있다. 또한, 정렬 알고리..