[내일배움캠프 Spring_3기] 완전탐색과 그리디 알고리즘

jiiim_ni·2026년 1월 28일

완전 탐색

완전 탐색은 가능한 모든 경우의 수를 전부 확인하여 문제를 해결하는 방법

완전 탐색의 장단점

장점

  • 구현이 단순하고 이해하기 쉽다
  • 모든 경우를 확인하므로 반드시 정답을 찾을 수 있다
  • 문제를 처음 접근할 때 좋은 시작점이 됨

단점

  • 모든 경우를 확인하므로 실행 시간이 오래 걸림
  • 경우의 수가 많아지면 현실적으로 해결이 어려움

반복문을 이용한 완전 탐색

반복문을 이용한 완전 탐색은 for문이나 while문을 사용하여 가능한 모든 경우를 순차적으로 탐색하는 방법

  • 문제에서 주어진 범위나 조건을 파악
  • 해당 범위 내의 모든 경우를 반복문으로 확인
  • 각 경우마다 문제의 조건을 만족하는지 검사

그리디 알고리즘

그리디 알고리즘은 현재 상황에서 가장 좋아 보이는 선택을 하는 방법 -> 각 단계에서 최적이라고 생각되는 것을 선택하는 것

그리디 알고리즘의 장단점

장점

  • 구현이 비교적 단순하고 실행 속도가 빠름
  • 직관적이어서 이해하기 쉬움

단점

  • 항상 최적의 해를 보장하지는 않음
    • 각 단계에서의 최적의 선택이 최적 해결책이 아닐 수 있음
  • 적용할 수 있는 문제의 유형이 한정적

그리디 알고리즘의 두 가지 필수 조건

  1. 탐욕 선택 속성
  • 각 단계에서 선택한 방법이 이후의 결정과 상관없이 최종 답의 최적성을 유지해야 함("각각의 선택"에 초점)
  1. 최적 부분 구조
  • 전체 문제의 최적해가 문제를 나눈 각 부분 문제의 최적해를 결합해서 얻을 수 있어야 함("문제의 구조"에 초점)

그리디 알고리즘 증명 방법

  1. 수학적 증명 - 가장 확실한 증명 방법이지만 난이도 높음
  2. 작은 예시로 검증 - 다양한 크기의 입력값으로 직접 테스트
  3. 반례 찾기 - 그리디 알고리즘이 실패하는 경우 찾기
  4. 기존 문제와의 비교 - 이미 증명된 문제들과 비교 분석

완전탐색 vs 그리디 알고리즘 비교

완전 탐색을 사용하는 경우

  • 문제의 입력 크기가 작을 때
  • 정확한 최적해가 필요할 때
  • 다른 알고리즘을 적용하기 어려운 경우

그리디 알고리즘을 사용하는 경우

  • 문제의 크기가 클 때
  • 실행 시간이 중요한 경우
  • 부분적인 최적 해가 전체 최적 해로 이어지는 문제일때

0개의 댓글