정현수
현수 세상
정현수
전체 방문자
오늘
어제
반응형
  • 분류 전체보기 (267)
    • NEXTSTEP 자바스크립트 클린코드 2기 (1)
    • 우테코 4기 (6)
    • 회고록 (5)
    • 개발지식 (6)
    • React (3)
      • React Clone Coding (3)
    • React Native (2)
    • Kubernetes & Docker (36)
      • 궁금한 것 (13)
    • Flutter (2)
    • 알고리즘 (168)
      • 프로그래머스 1단계 (27)
      • 프로그래머스 2단계 (37)
      • 백준 (98)
      • 이론 (6)
    • 자료구조 (3)
    • 유튜브 (1)
    • 책 읽자 (1)
    • 취업준비 (1)
    • 대내 활동 (31)
      • 2022년 겨울방학 알고리즘 특강 (0)
      • 2020년 여름방학 모각코 (13)
      • 2020년 겨울방학 모각코 (13)
      • 웹프로그래밍 상상튜터링 (5)

인기 글

최근 글

공지사항

  • 블로그 이동

태그

  • 모각코
  • 리액트
  • kubelet
  • replicaset
  • 이코테
  • 개발지식
  • 레플리카셋
  • 우테코
  • flutter
  • 공식문서
  • Deployment
  • image run
  • NodePort
  • 파이썬
  • 자바스크립트
  • 알고리즘
  • Kubernetes
  • Jenkins
  • 프로그래머스
  • 노드
  • 그리디
  • 디플로이먼트
  • docker
  • programmers
  • 백준
  • mysql
  • javascript
  • React
  • image pull
  • 쿠버네티스

최근 댓글

블로그 메뉴

  • 홈

티스토리

hELLO · Designed By 정상우.
정현수

현수 세상

[자바스크립트] 그리디 (Greedy) 알고리즘
알고리즘/이론

[자바스크립트] 그리디 (Greedy) 알고리즘

2021. 8. 5. 18:20
반응형

그리디(Greedy) 알고리즘

지금 순간에 가장 최적의 해를 선택하는 알고리즘

다음과 같이 위에서 아래로 이동하면서 거쳐가는 노드의 합이 가장 큰길을 찾고자 한다면

그리디 알고리즘은 아래와 같이 찾아냅니다.

 

 

노드 5에서 봤을 때는 다음으로 가장 높은 수가 100이므로 100을 선택하고,

100에서는 30을 선택합니다.

 

하지만 실제로 가장 높은 노드의 합은 5에서 10을 거쳐 500으로 가는 길입니다.

이렇듯 그리디 알고리즘은 항상 최적의 해를 보장해주지는 못합니다.

 

그리디 알고리즘은 이럴 때 좋습니다

근사 알고리즘

위에서 봤다시피 항상 최적의 해를 보장해주지는 못하지만, 어느 정도 최적에 근사한 답을 알려줍니다.

그래서 "적당히 괜찮은 해답"을 얻기 위해서는 최적의 알고리즘입니다.

 

또한 뒤의 경우를 더 생각해야 하거나, 다른 경우를 생각할 필요 없이

매 순간 최적의 해만 판단하면 되기 때문에 다른 알고리즘보다 평균적으로 속도가 빠릅니다.

 

최적 부분 구조

1에서 3으로 가는 최단의 거리를 계산하기 위해서는

1에서 2로 갈 수 있는 최단 거리 + 2에서 3으로 갈 수 있는 최단 거리

그래서 정답은 파란색 길 50 + 빨간색 길 50으로 100이 됩니다.

 

이 처럼 문제의 최적 해결 방법은 부분 문제에 대한 최적 해결 방법으로 구성됩니다.

이러한 구조를 최적 부분 구조라 합니다.

 

그리디 대표적인 문제들 (프로그래머스)

프로그래머스에서 그리디 문제들을 풀어볼 수 있습니다.

 

  • LV1 체육복 문제 풀이 https://junghyeonsu.tistory.com/133
  • LV2 큰 수 만들기 문제 풀이 https://junghyeonsu.tistory.com/169 
  • LV2 조이스틱 문제 풀이 https://junghyeonsu.tistory.com/manage/posts/

 

반응형

'알고리즘 > 이론' 카테고리의 다른 글

[알고리즘] 이진 탐색 알고리즘 알기  (0) 2021.01.14
[알고리즘] 정렬 알고리즘 알기  (0) 2021.01.13
[알고리즘] DFS & BFS 알기  (0) 2021.01.11
[알고리즘] 그리디 알고리즘 알기  (3) 2021.01.08
[이코테] 코딩 테스트 출제 경향 분석 및 파이썬 문법 부수기  (0) 2021.01.06
    정현수
    정현수
    깃허브 : https://github.com/junghyeonsu 개인 블로그 : https://junghyeonsu.com/ (양질의 글을 올리려고 항상 노력합니다.)

    티스토리툴바