본문 바로가기

알고리즘

22. [JAVA] 그리디 알고리즘 이란??

[ 참고 블로그 ]

 

https://velog.io/@sanizzang00/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98Java-%EA%B7%B8%EB%A6%AC%EB%94%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98Greedy-Algorithm

 

[알고리즘(Java)] 그리디 알고리즘(Greedy Algorithm)

: "매 선택에서 지금 이 순간 당장 최적의 답을 선택하여 적합한 결과를 도출하자"라는 모토를 가지는 알고리즘 설계 기법그리디 알고리즘은 기본적으로 무조건 큰 경우대로, 무조건 작은 경우

velog.io

 

 

[ 그리드 알고리즘 이란? ]

 

 

그리디 알고리즘은 다른 알고리즘 과는 다르게

 

코드 자체의 패턴이 있기 보다는 방식의 느낌이 가능하다

 

그리디 갈고리즘이란 다른 의미로 욕심쟁이 알고리즘 이라고도 한다

 

 

 

[ 정의 ]

 

그리디 알고리즘은 기본적으로 무조건 큰 경우대로, 무조건 작은 경우대로, 무조건 긴 경우대로, 무조건 짧은 경우대로 등 극단적으로 문제에 접근하는 방식으로 정렬(Sort)를 함께 사용하는 경우가 많다

 

 

[ 장점 ]

 

항상 최적의 결과를 도출하는 것은 아니지만 어느 정도 최적의 해에 근사한 값을 빠르게 구할 수 있다는 장점이 있다. 또한 '특정한 상황'에 있어서는 그리디 알고리즘이 최적의 해를 보장할 수도 있다

 

 

 

https://www.acmicpc.net/problem/11047

 

11047번: 동전 0

첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)

www.acmicpc.net

 

 

그리디 알고리즘을 사용하면 적절한 문제이다