반응형

python - 알고리즘 2

python - 이분/이진 탐색

이분 탐색은 target 값을 정해 놓고 그 target값을 찾는 알고리즘입니다. 이분 탑색은 완전 탐색과는 다르게 모든 경우의 수를 다 찾는 것이 아닌 범위를 좁혀 가면서 탑색을 합니다. 이분 탐색의 이름만 봐도 범위를 어떻게 좁힐지 알 수 있습니다. 말 그대로 '이분' 둘로 나누다 범위를 반복할 때마다 중간값 기준으로 둘로 나누어 중간값이 target 값보다 크면 중간값보다 작은 것들 중에서 탐색하고 중간값이 target 값보다 작으면 중간값보다 큰 것들 중에서 탑색을 한다. 여기서 중요한 점이 만약 탑색 할 값들이 정렬돼있지 않으면 중간값은 의미가 없게 됩니다. 따라서 이분 탐색을 하려면 탐색할 값들이 정렬되어 있어야 합니다. 그래서 최종적으로 중간값과 target 값이 같아질 때까지 반복하면 된다..

python - 그리디(Greedy)

그리디 Greedy의 사전적 의미는 '탐욕스러운'이라는 뜻입니다. 그리디 알고리즘은 그 이름에 알맞게 탐욕적인 알고리즘입니다. 그리디 알고리즘은 현제 상황에서 가장 최적의 해를 찾습니다. 위 그림에서 돈을 가장 많이 얻을 수 있는 루트는 천원 먹고 100만 원 먹는 거지만 그리디 알고리즘은 현제 상황에서의 최적의 해를 찾기 때문에 만원과 천원중 만원을 고르고 10만 원과 20만 원 중 20만 원을 골라 21만 원을 얻습니다. 즉 그리디 알고리즘은 다음 상황은 생각하지 않는 거죠. 그리디 알고리즘 예시로 간단한 문제 하나를 풀어보겠습니다. 동전으로 거스름돈을 줄 때 동전을 최소의 개수로 주려면 몇 개의 동전을 줘야 하는지 물어보는 문제입니다. print("거슬러줄 돈을 입력하세요.") money = int..

반응형