๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
Problem Solving/ALGORITHM

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜(Greedy Algorithm)

by DevIseo 2022. 5. 13.

๊ทธ๋ฆฌ๋””(Greedy) ์•Œ๊ณ ๋ฆฌ์ฆ˜


๐ŸŽˆ๊ฐœ๋…

- ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ, ์—ฌ๋Ÿฌ ๊ฒฝ์šฐ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•  ๋•Œ ๊ทธ ์ˆœ๊ฐ„์— ์ตœ์ ์ด๋ผ๊ณ  ์ƒ๊ฐ๋˜๋Š” ๊ฒƒ์„ ์„ ํƒํ•ด ๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜์—ฌ ์ตœ์ข…์ ์ธ ํ•ด๋‹ต์— ๋„๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•
- ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ตœ์  ํ•ด๋ฅผ ๊ตฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ทผ์‹œ์•ˆ์ ์ธ ๋ฐฉ๋ฒ•
- ๊ฐ ์„ ํƒ์˜ ์‹œ์ ์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒฐ์ •์€ ์ง€์—ญ์ ์œผ๋กœ๋Š” ์ตœ์ ์ด์ง€๋งŒ, ๊ทธ ์„ ํƒ๋“ค์„ ํ†ตํ•ด ์ตœ์ข…์ ์ธ ํ•ด๋‹ต์„ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ํ•ด์„œ ๊ทธ๊ฒƒ์ด ์ตœ์ ์ด๋ผ๋Š” ๋ณด์žฅ์ด ์—†๋Š” ๊ณ„ํš๋ฒ•
 

๐ŸŽˆ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์กฐ๊ฑด

  1. ํƒ์š•์Šค๋Ÿฌ์šด ์„ ํƒ ์กฐ๊ฑด
    - ํƒ์š•์ ์ธ ์„ ํƒ์€ ํ•ญ์ƒ ์•ˆ์ „ํ•˜๋‹ค๋Š” ๊ฒƒ์ด ๋ณด์žฅ๋˜์–ด์•ผ ํ•จ. "์•ˆ์ „ํ•˜๋‹ค"๋ผ๋Š” ์˜๋ฏธ๋Š” ์ด ์„ ํƒ์œผ๋กœ ์ธํ•ด ์ „์ฒด ๋ฌธ์ œ์˜ ์ตœ์ ํ•ด๋ฅผ ๋ฐ˜๋“œ์‹œ ๋„์ถœํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ.
  2. ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด ๊ฒฐ๊ณผ ๋„์ถœ ์‹œ ์ตœ์ ํ•ด๊ฐ€ ๋ฌด์กฐ๊ฑด ๋‚˜์˜ค๋‚˜?
    - ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌด์กฐ๊ฑด ์ตœ์ ํ•ด๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒƒ์€ ์•„๋‹˜!
    but, ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด ํ‘ธ๋Š” ๋ฌธ์ œ๊ฐ€ ๋‚˜์™”์„ ๋•Œ
    ์ด ์กฐ๊ฑด์ด ๋งŒ์กฑ๋˜๋Š”๊ฐ€? ๋ฅผ ์ƒ๊ฐํ•ด ์ถฉ์กฑ๋˜๋ฉด ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉ.
    ์ฆ‰, ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ์ ํ•ด๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œํ•จ.
  3. ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ ์กฐ๊ฑด
    - ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ตœ์ข… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ๋ถ€๋ถ„ ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ๋„ ๋˜ํ•œ ์ตœ์ ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด๋‹ค๋ผ๋Š” ์กฐ๊ฑด
    ์ด ๋ง์€ ์ „์ฒด ๋ฌธ์ œ์˜ ์•ˆ์—๋Š” ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๊ฐ€ ์กด์žฌํ•˜๊ณ , ์ด ์—ฌ๋Ÿฌ ๋‹จ๊ณ„ ๋‚ด์˜ ํ•˜๋‚˜ ํ•˜๋‚˜์˜ ๋‹จ๊ณ„์— ๋Œ€ํ•ด ์ตœ์ ํ•ด๊ฐ€ ๋„์ถœ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์€ ๊ฐ’๋“ค์ด ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ๋ฉด ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์—ผ๋‘์— ๋‘์–ด์•ผ ํ•จ!

 


๐ŸŽˆ๋Œ€ํ‘œ์ ์ธ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜ˆ์ œ - ๋™์ „ ๊ตํ™˜ ๋ฌธ์ œ

# greedy ๋™์ „๊ตํ™˜ ๋ฌธ์ œ
coin=[500,100,50,10]
change=int(input())
answer=0   # ๋™์ „ ๋ช‡๊ฐœ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ์ตœ์†Œ๊ฐ’
index=0
while(1):
    cnt=change//coin[index] # index๊ฐ€ 0์ผ๋•Œ.. cnt 500 ๋™์ „ ์‚ฌ์šฉ ๊ฐœ์ˆ˜
    change-=(cnt*coin[index]) # ๊ฑฐ์Šฌ๋Ÿฌ ์ค„ ๋ˆ์—์„œ ๋™์ „๊ฐฏ์ˆ˜*500 ๋นผ์ฃผ๊ธฐ
    answer+=cnt
    index+=1   # ์ธ๋ฑ์Šค 1 ์ฆ๊ฐ€ ์‹œ์ผœ์„œ 100์งœ๋ฆฌ ๋™์ „ ์‚ฌ์šฉํ•  ์ค€๋น„
    if index==4:
        break
print(answer)

 

Reference

https://velog.io/@contea95/%ED%83%90%EC%9A%95%EB%B2%95%EA%B7%B8%EB%A6%AC%EB%94%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

https://ko.wikipedia.org/wiki/%ED%83%90%EC%9A%95_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

๋Œ“๊ธ€