λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ“š Algorithm/Algorithm Note

μ•Œκ³ λ¦¬μ¦˜ - Greedy (νƒμš• μ•Œκ³ λ¦¬μ¦˜, μš•μ‹¬μŸμ΄ μ•Œκ³ λ¦¬μ¦˜), μ΅œμ ν•΄ μ°ΎκΈ°

Greedy Alogrithm 

GreedyλŠ” 사전적인 의미둜 'νƒμš•μŠ€λŸ¬μš΄', 'μš•μ‹¬λ§Žμ€' μ΄λΌλŠ” λœ»μ„ 가지고 μžˆλ‹€. 

νƒμš• μ•Œκ³ λ¦¬μ¦˜ λ˜λŠ” μš•μ‹¬μŸμ΄ μ•Œκ³ λ¦¬μ¦˜ 라고도 λΆˆλ¦°λ‹€. 

미래λ₯Ό μƒκ°ν•˜μ§€ μ•Šκ³  μ„ νƒμ˜ μˆœκ°„λ§ˆλ‹€ λ‹Ήμž₯ λˆˆμ•žμ— λ³΄μ΄λŠ” 졜적의 선택을 ν•˜λŠ” 기법

각 λ‹¨κ³„μ—μ„œ μ΅œμ„ μ˜ 선택을 ν•œ 것이 μ „μ²΄μ μœΌλ‘œλ„ μ΅œμ„ μ΄κΈΈ λ°”λΌλŠ” μ•Œκ³ λ¦¬μ¦˜

 

 

 

그리디 μ•Œκ³ λ¦¬μ¦˜ ν•΄κ²° 방법

  1. 선택 : ν˜„μž¬ μƒνƒœμ—μ„œ 졜적의 ν•΄λ‹΅ 선택
  2. μ μ ˆμ„± 검사 : μ„ νƒλœ 닡이 문제의 쑰건을 λ§Œμ‘±ν•˜λŠ” 지 확인
  3. ν•΄λ‹΅ 검사 : μ›λž˜μ˜ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆλŠ”μ§€ κ²€μ‚¬ν•˜κ³ , ν•΄κ²°λ˜μ§€ μ•Šμ•˜λ‹€λ©΄ 선택 절차둜 λŒμ•„κ°€ μœ„μ˜ 과정을 λ°˜λ³΅ν•œλ‹€.

 

그리디 μ•Œκ³ λ¦¬μ¦˜ 쑰건

그리디 μ•Œκ³ λ¦¬μ¦˜μ„ μ μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” 2가지 쑰건을 성립해야 ν•œλ‹€.

 

1. νƒμš•μ  선택 속성 (Greedy Choice Property) : μ•žμ˜ 선택이 μ΄ν›„μ˜ 선택에 영ν–₯을 주지 μ•ŠμŒ

2. 졜적 λΆ€λΆ„ ꡬ쑰 (Optimal Substructure) : λ¬Έμ œμ— λŒ€ν•œ μ΅œμ’… ν•΄κ²° 방법은 λΆ€λΆ„ λ¬Έμ œμ— λŒ€ν•œ 졜적 문제 ν•΄κ²° λ°©λ²•μœΌλ‘œ ꡬ성됨

 

μœ„μ˜ 2가지 쑰건이 μ„±λ¦½ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ—λŠ” μ΅œμ ν•΄λ₯Ό κ΅¬ν•˜μ§€ λͺ»ν•œλ‹€.

그럼 μœ„μ˜ 쑰건이 μ„±λ¦½ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ 그리디 μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜μ§€ λͺ»ν• κΉŒ?  μ•„λ‹ˆλ‹€. 

그리디 μ•Œκ³ λ¦¬μ¦˜μ€ 항상 졜적의 κ²°κ³Όλ₯Ό λ„μΆœν•˜μ§€λŠ” μ•Šμ§€λ§Œ, λŒ€λΆ€λΆ„μ˜ 경우 계산 속도가 λΉ λ₯΄κΈ° λ•Œλ¬Έμ— μ‹€μš©μ μœΌλ‘œ μ‚¬μš©ν•  수 μžˆλ‹€.

 

 

그리디 μ•Œκ³ λ¦¬μ¦˜ μ˜ˆμ‹œ

민지가 마트λ₯Ό κ°€μ„œ 라면과 μ•„μ΄μŠ€ν¬λ¦Όμ„ 샀닀. 총 6120원이 λ‚˜μ™”λ‹€. 
계산을 ν•˜κΈ° μœ„ν•΄ 7000원을 λƒˆλ‹€. λ―Όμ§€λŠ” κ±°μŠ€λ¦„λˆμ„ μ‹«μ–΄ν•΄μ„œ μ΅œμ†Œν•œμœΌλ‘œ 거슬러 달라고 ν•˜μ˜€λ‹€. 
이 λ•Œ, 마트 사μž₯λ‹˜μ€ μ–΄λ–»κ²Œ 거슬러 μ€˜μ•Όν• κΉŒ? 

 

동전은 500, 100, 50, 10원이 μžˆλ‹€κ³  κ°€μ •ν•œλ‹€. 

  • κ±°μŠ€λ¦„λˆ 880원을 μ±„μš°κΈ° μœ„ν•΄μ„œ λ¨Όμ € κ°€μž₯ 큰 500μ›μ§œλ¦¬ 동전을 ν•œ 개λ₯Ό μ„ νƒν•œλ‹€. (두 κ°œλŠ” 1000원이 λ˜λ―€λ‘œ X)
  • κ·Έ λ‹€μŒμ€ 100μ›μ§œλ¦¬ 동전을 μ„Έ 개 μ„ νƒν•œλ‹€.
  • κ·Έλ‹€μŒμ—” 50μ›μ§œλ¦¬ 동전 μ„Έ κ°œμ™€ 10μ›μ§œλ¦¬ 동전 μ„Έ 개λ₯Ό 선택할 것이닀.

 

 

 

그리디 μ•Œκ³ λ¦¬μ¦˜ ν•΄κ²° 방법 μ ˆμ°¨μ™€ 비ꡐ

  1. 선택 : κ±°μŠ€λ¦„λˆ λ²”μœ„ μ•ˆμ—μ„œ κ°€μž₯ 큰 동전을 μš°μ„  μ„ νƒν•œλ‹€. 
  2. μ μ ˆμ„± 검사 : 1번 과정을 톡해 λ™μ „λ“€μ˜ 합이 κ±°μŠ€λ¦„λˆμ„ μ΄ˆκ³Όν•˜λŠ”μ§€ 검사λ₯Ό ν•œλ‹€. λ§Œμ•½, μ΄ˆκ³Όν•˜λ©΄ κ°€μž₯ λ§ˆμ§€λ§‰μ— μ„ νƒν•œ 동전을 λΉΌκ³ ,                       1번으둜 λŒμ•„κ°€ 더 μž‘μ€ 동전을 μ„ νƒν•œλ‹€. 
  3. ν•΄λ‹΅ 검사 : μ„ νƒλœ 동전듀이 κ±°μŠ€λ¦„λˆκ³Ό μΌμΉ˜ν•˜λŠ”μ§€ κ²€μ‚¬ν•œλ‹€

 

 

 

728x90