반응형
SMALL
완전탐색(Brute-Force)과 탐욕법(Greedy Approach)은 모두 최적해를 찾기 위한 알고리즘 기법입니다. 하지만 그 접근 방식과 해결 과정에서 차이가 있습니다.
- 완전탐색(Brute-Force) 완전탐색은 가능한 모든 경우의 수를 체계적으로 열거하고 검사하여 최적해를 찾는 방법입니다. 즉, 문제의 모든 가능한 해를 생성한 후 그 중에서 가장 좋은 해를 선택합니다. 이 방법은 간단하고 구현하기 쉽지만, 문제의 크기가 커질수록 계산 시간이 기하급수적으로 증가하는 단점이 있습니다.
예시: 주어진 배열에서 두 수의 합이 목표 값과 같은 쌍을 찾는 문제
function findSum(arr, target) {
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] + arr[j] === target) {
return [arr[i], arr[j]];
}
}
}
return [];
}
- 탐욕법(Greedy Approach) 탐욕법은 현재 상황에서 가장 좋아 보이는 해를 선택하는 방식입니다. 즉, 매 단계에서 최적의 선택을 하면서 전체 문제를 해결해 나가는 방법입니다. 이 방법은 완전탐색에 비해 계산 시간이 빠르지만, 항상 최적해를 보장하지는 않습니다.
예시: 화폐 거스름돈 문제 (가장 적은 수의 동전으로 거슬러 주기)
function minCoins(coins, amount) {
let count = 0;
for (let i = coins.length - 1; i >= 0; i--) {
const coin = coins[i];
count += Math.floor(amount / coin);
amount %= coin;
}
return count;
}
완전탐색과 탐욕법의 주요 차이점은 다음과 같습니다:
- 접근 방식: 완전탐색은 모든 경우를 고려하지만, 탐욕법은 현재 상황에서 최적으로 보이는 선택을 합니다.
- 최적해 보장: 완전탐색은 모든 경우를 고려하므로 최적해를 보장하지만, 탐욕법은 그렇지 않을 수 있습니다.
- 계산 시간: 일반적으로 완전탐색은 계산 시간이 오래 걸리지만, 탐욕법은 상대적으로 빠릅니다.
따라서 문제의 특성에 따라 적절한 알고리즘 기법을 선택해야 합니다. 완전탐색은 최적해를 반드시 찾아야 하는 경우에 유용하지만, 계산 시간이 오래 걸릴 수 있습니다. 반면, 탐욕법은 계산 시간이 빠르지만 최적해를 보장하지 않습니다.
728x90
반응형
LIST
'javascript > 기초' 카테고리의 다른 글
슬라이딩 윈도우 기법 (0) | 2024.05.13 |
---|---|
indexOf() (0) | 2024.04.10 |
startsWith() (0) | 2024.04.10 |
for ...in (0) | 2024.04.10 |
includes() (0) | 2024.04.10 |