μ•Œκ³ λ¦¬μ¦˜

그리디 μ•Œκ³ λ¦¬μ¦˜ κ°œλ… 총 정리

ghtis1798 2021. 6. 1. 16:29

πŸ”Έκ·Έλ¦¬λ”” μ•Œκ³ λ¦¬μ¦˜

GreedyλŠ” νƒμš•μŠ€λŸ½λ‹€λŠ” 뜻으둜 맀 μˆœκ°„ μ΅œμ„ μ˜ 선택을 μˆ˜ν–‰ν•¨μœΌλ‘œμ¨ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.

λ”°λΌμ„œ λͺ‡λͺ‡ μ˜ˆμ™Έλ₯Ό μ œμ™Έν•˜λ©΄ 문제 μœ ν˜•μ΄λ‚˜ ν…Œν¬λ‹‰ν•œ 기술 없이도 ν’€ 수 μžˆλŠ” λ¬Έμ œμž…λ‹ˆλ‹€.

ν•˜μ§€λ§Œ, 문제λ₯Ό μ ‘ν–ˆμ„ λ•Œ ν•΄κ²°ν•  수 μžˆλŠ” μ΅œμ†Œν•œμ˜ μ•„μ΄λ””μ–΄λŠ” λ– μ˜¬λ¦΄ 수 μžˆμ–΄μ•Ό 해결이 κ°€λŠ₯ν•˜λ―€λ‘œ λ¬Έμ œν’€μ΄λ₯Ό 톡해 감을 읡힐 ν•„μš”κ°€ μžˆλŠ” μœ ν˜•μ΄λΌκ³  λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

단, λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜, μ •λ ¬ μ•Œκ³ λ¦¬μ¦˜κ³Ό ν•¨κ»˜ μΆœμ œλ˜λŠ” 경우 미리 μˆ™μ§€κ°€ ν•„μš”ν•œ κ²½μš°λ„ μžˆμŠ΅λ‹ˆλ‹€.

πŸ“Œ 정리

그리디 μ•Œκ³ λ¦¬μ¦˜μ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ‹€μŒ λŠ₯λ ₯을 ν‚€μšΈ ν•„μš”κ°€ μžˆμŠ΅λ‹ˆλ‹€.

  • 맀 번 μ΅œμ„ μ˜ μ„ νƒλ§Œ μˆ˜ν–‰ν•΄λ„ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆλŠ”μ§€λ₯Ό νŒŒμ•…ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  • 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ μ΅œμ†Œν•œμ˜ 아이디어λ₯Ό λ– μ˜¬λ¦΄ 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • λͺ…ν™•ν•œ 문제 μœ ν˜•μ΄ νŒŒμ•…λ˜μ§€ μ•Šμ„ λ•Œ, 그리디 μ•Œκ³ λ¦¬μ¦˜μ„ μ˜μ‹¬ν•΄λ³΄μ•„μ•Ό ν•©λ‹ˆλ‹€.

μ—¬κΈ°μ„œ 맀 번 μ΅œμ„ μ˜ 선택을 μˆ˜ν–‰ν•  μ‹œ, μ–΄λ–€ 기쀀이 μ΅œμ„ μΈμ§€λ₯Ό μ„ΈμšΈ 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ μ •λ ¬ μ•Œκ³ λ¦¬μ¦˜κ³Ό ν•¨κ»˜ μΆœμ œλ˜λŠ” κ²½ν–₯이 μžˆμŠ΅λ‹ˆλ‹€.

κ²°κ΅­ 문제 해결을 μœ„ν•œ κΎΈμ€€ν•œ λ…Έλ ₯이 ν•„μš”ν•œ μœ ν˜•μ΄λΌκ³  μƒκ°λ©λ‹ˆλ‹€.

반면 μ •λ ¬, μ΅œλ‹¨ 경둜 λ¬Έμ œλŠ” 해결을 μœ„ν•œ μ•Œκ³ λ¦¬μ¦˜μ„ 미리 μˆ™μ§€ν•˜κ³  μžˆμ–΄μ•Ό 풀이가 κ°€λŠ₯ν•©λ‹ˆλ‹€.

πŸ“Œ κ±°μŠ€λ¦„λˆ μ˜ˆμ‹œ

λŒ€ν‘œμ μΈ 그리디 μ•Œκ³ λ¦¬μ¦˜ μ˜ˆμ‹œμΈ κ±°μŠ€λ¦„λˆ μ˜ˆμ‹œμž…λ‹ˆλ‹€.

Nμ›μ˜ κ±°μŠ€λ¦„λˆμ„ λŒλ €μ€„ λ•Œ 500원, 100원, 50원, 10원 동전이 무수히 λ§Žμ„ λ•Œ, μ΅œμ†Œν•œμ˜ 동전 개수 쑰합을 κ΅¬ν•˜λŠ” λ¬Έμ œμ— ν•΄λ‹Ήν•©λ‹ˆλ‹€.

그리디 μ•Œκ³ λ¦¬μ¦˜μ΄λΌ κ°€μ •ν–ˆμ„ μ‹œ 문제λ₯Ό μ ‘κ·Όν•˜λŠ” 사고 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  1. λ§Œμ•½ κ°€μž₯ μž‘μ€ 동전(10원)으둜만 거슬러주면 μ–΄λ–»κ²Œ 될까?
  2. κ·Έ λ‹€μŒ 큰 λ™μ „μœΌλ‘œ 거슬러주면?
  3. → κ°€μž₯ 큰 λ™μ „μœΌλ‘œ κ±°μŠ¬λŸ¬μ£Όμ–΄μ•Ό μ΅œμ†Œ 동전 개수λ₯Ό λ§Œμ‘±ν•œλ‹€.

단, 3번의 결둠을 λ‚΄λ¦° λ’€ 항상 졜적의 ν•΄λ₯Ό 보μž₯ν•  수 μžˆλŠ”μ§€λ₯Ό κ²€ν† ν•œ 후에야 정닡을 맞좜 수 μžˆμŠ΅λ‹ˆλ‹€.

μ™œλƒν•˜λ©΄ μ˜ˆμ™Έκ°€ μ‘΄μž¬ν•  수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

500원, 400원, 50원, 10μ›μ˜ 경우 500원이 400μ›μ˜ λ°°μˆ˜κ°€ μ•„λ‹ˆλ―€λ‘œ 800원이 주어지면 졜적의 ν•΄λŠ” 400원 x 2μž…λ‹ˆλ‹€.

이 글은 '이것이 μ½”λ”©ν…ŒμŠ€νŠΈλ‹€ - λ‚˜λ™λΉˆ μ €'μ„œμ μ„ μ°Έκ³ ν•˜μ—¬ μ •λ¦¬ν•˜μ˜€μŠ΅λ‹ˆλ‹€.