04. 그리디(Greedy) 알고리즘

2021. 5. 3. 22:58·SW개발/알고리즘
반응형

  • 알기쉬운 알고리즘(양성봉 저, 생능 출판) 책을 바탕으로 작성한 내용이다.

04. 그리디(Greedy) 알고리즘

  • 최적화 문제를 해결하는 알고리즘이다.

  • 입력 데이터 간의 관계를 고려하지 않고, 수행 과정에서 최솟값 또는 최댓값을 가진 데이터를 선택한다.

    • 근시안적 선택으로 부분적인 최적해를 찾고, 이를 모아서 문제 전체의 최적해를 찾는다.
  • 한번 선택하면 번복하지 않아서 알고리즘들이 비교적 단순하다.


4.1 동전 거스름돈

  • 거스름돈의 동전 개수를 가장 적게 받는 방법

  • 남은 액수를 초과하지 않는 조건에서 가장 큰 액면의 동전을 취하는 방법을 사용한다.

    Pseudo Code

    int CountCoin(int change)
    {
      int n500 = n100 = n50 = n10 = n1 = 0;
      while (change >= 500)
      {
        change -= 500;
        n500++;
      }
      while (change >= 100)
      {
        change -= 100;
        n100++;
      }
      while (change >= 50)
      {
        change -= 50;
        n50++;
      }
      while (change >= 10)
      {
        change -= 10;
        n10++;
      }
      while (change >= 1)
      {
        change -= 1;
        n1++;
      }
      return (n500 + n100 + n50 + n10 + n1);
    }
  • 만약 160원짜리 동전이 추가된다면, 이 알고리즘은 최적해를 보장하지 못한다.

    • 어떤 경우에도 최적해를 찾고 싶으면 동적 계획 알고리즘을 사용해야 한다.

4.2 최소 신장 트리(Minimum Spanning Tree)

4.3 최단 경로 찾기(Shortest Path)

4.4 부분 배낭 문제(Fractional Kanpsack Problem)

4.5 집합 커버 문제(Set Cover Problem)

4.6 작업 스케줄링(Task Scheduling)

4.7 허프만 압축(Huffman Coding)

반응형
저작자표시 (새창열림)

'SW개발 > 알고리즘' 카테고리의 다른 글

작업 스케줄링(Task Scheduling)  (0) 2021.05.03
집합 커버 문제 (Set Cover Problem)  (0) 2021.05.03
부분 배낭 문제 (Fractional Kanpsack Problem)  (0) 2021.05.03
최단 경로 찾기(Shortest Path)  (0) 2021.05.03
최소 신장 트리(Minimum Spanning Tree)  (0) 2021.05.03
'SW개발/알고리즘' 카테고리의 다른 글
  • 작업 스케줄링(Task Scheduling)
  • 집합 커버 문제 (Set Cover Problem)
  • 부분 배낭 문제 (Fractional Kanpsack Problem)
  • 최단 경로 찾기(Shortest Path)
Caniro
Caniro
  • Caniro
    Minimalism
    Caniro
  • 전체
    오늘
    어제
    • 전체보기 (318) N
      • SW개발 (268)
        • Java Spring (6)
        • C++ (186)
        • Python (21)
        • Linux (16)
        • 알고리즘 (13)
        • Git (4)
        • Embedded (1)
        • Raspberrypi (9)
        • React (3)
        • Web (2)
        • Windows Device Driver (6)
      • IT(개발아님) (45)
        • Windows (25)
        • MacOS (7)
        • Utility (11)
      • 챗봇 짬통 (0)
      • 일상 (2) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    MacOS
    unix
    vscode
    windows
    Solaris 10
    그림판
    스프링 프레임워크 핵심 기술
    citrix workspace
    EXCLUDE
    시스템 복구
    Workspace
    spring
    제외
    dism
    윈도우 명령어
    맥북 카카오톡 알림 안뜸
    logi options
    로지텍 마우스 제스처
    SunOS 5.1
    Windows 11
    윈도우
    KakaoTalk
    SFC
    스프링
    알림
    백기선
    mspaint
    java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Caniro
04. 그리디(Greedy) 알고리즘
상단으로

티스토리툴바