algorithm(3)
-
[Algorithm] 탐욕법(Greedy) 알고리즘 개념 및 예제
이번 포스팅에선 탐욕법(그리디) 알고리즘에 대해 알아보겠습니다. 개념과 알고리즘을 사용하는 조건을 알아보고, 동전 문제를 통해 활용 예시를 살펴보겠습니다. * 언어는 C++로 진행됩니다. 목차 📃 그리디 알고리즘 개념 및 조건 📃 그리디 알고리즘 예제 - 동전 문제 그리디 알고리즘 개념 및 조건 📌 개념 그리디 알고리즘은 가장 최선의 선택만을 쫒아가는 알고리즘입니다. 다이나믹 프로그래밍의 경우, 다양한 경우들을 하나하나 살펴보면서 최선의 수를 찾고자 했습니다. 그와 달리, 그리디 알고리즘은 오직 눈앞의 최선만을 쫒아 갑니다. 그리디 알고리즘은 Best Solution을 찾기 위한 알고리즘은 아닙니다. 그저 최선을 쫓다보면 결과도 좋겠지 하는 막연한 기대가 구현된 알고리즘이라 할 수 있습니다. 이때문에 현..
2022.07.18 -
[Algorithm] 이분 탐색(Binary Search) 개념 및 코드(python)
순서대로 나열되어 있는 배열이 있습니다. 이 배열에서 target 값을 찾으려 하는데, 배열 요소가 100만개라 모두 비교하면 시간이 많이 걸립니다. 이때 더 빠르게 target 값을 찾을 순 없을까요? 이 필요성을 채워주는 것이 이분 탐색 알고리즘입니다. 📌 이분 탐색 정의 이분 탐색은 정렬된 배열을 1/2씩 줄여서 타겟 값을 찾아나가는 알고리즘입니다. 이분 탐색의 프로세스는 다음과 같습니다. (1) 배열의 중간 값을 찾는다. (2) target 값과 중간 값을 비교하여 (low, same, high)큰지, 작은지, 같은지를 판단한다. (3) target이 작다면 중간 값 이전의 배열을, 크다면 중간 값 이후의 배열을 대상으로 다시 이분 탐색을 진행한다. (4) 만약 같다면, 중간 값이 바로 targe..
2022.06.20 -
[Algorithm] 시간 복잡도와 공간 복잡도
'알고리즘을 효율적을 짠다 = 시간과 공간을 최소화한다' 알고리즘의 효율성을 판단할 때, 시간 복잡도(Time complexity)와 공간 복잡도(Space complexity)를 따진다. 백준, 프로그래머스에서도 알고리즘을 평가할 때 시간과 메모리 제한을 두는 것도 다 이런 이유에서다. 시간 복잡도(Time complexity) 개념와 예시 '입력값의 증가에 대한 연산 횟수 증가분' 시간 복잡도는 그저 실행 시간을 측정하는 것이 아니다. 실행 시간은 측정을 위한 프로그램이 필요할뿐더러 수행 환경에 따라 실행 시간이 달라질 수 있다. 이에 따라 입력값이 증가함에 따라 연산 횟수가 어떤 비율로 증가하는가에 초점을 두고 시간 복잡도를 측정한다. 시간 복잡도는 Worst Case, 즉 가장 최악으로 시간이 걸..
2022.04.16