본문 바로가기
javascript/기초

완전탐색(Brute-Force)과 탐욕법(Greedy Approach)

by yongfront 2024. 4. 18.
반응형
SMALL

완전탐색(Brute-Force)과 탐욕법(Greedy Approach)은 모두 최적해를 찾기 위한 알고리즘 기법입니다. 하지만 그 접근 방식과 해결 과정에서 차이가 있습니다.

  1. 완전탐색(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 [];
}
  1. 탐욕법(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;
}

완전탐색과 탐욕법의 주요 차이점은 다음과 같습니다:

  1. 접근 방식: 완전탐색은 모든 경우를 고려하지만, 탐욕법은 현재 상황에서 최적으로 보이는 선택을 합니다.
  2. 최적해 보장: 완전탐색은 모든 경우를 고려하므로 최적해를 보장하지만, 탐욕법은 그렇지 않을 수 있습니다.
  3. 계산 시간: 일반적으로 완전탐색은 계산 시간이 오래 걸리지만, 탐욕법은 상대적으로 빠릅니다.

따라서 문제의 특성에 따라 적절한 알고리즘 기법을 선택해야 합니다. 완전탐색은 최적해를 반드시 찾아야 하는 경우에 유용하지만, 계산 시간이 오래 걸릴 수 있습니다. 반면, 탐욕법은 계산 시간이 빠르지만 최적해를 보장하지 않습니다.

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