๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ(Greedy algorithm)์ด๋?
Goal
1. ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ์์๋ณด๊ธฐ
2. ์์ ๋ฌธ์ ํ์ด๋ณด๊ธฐ
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋?
๊ทธ๋ฆฌ๋(Greedy)๋ ๋จ์ด๋ ํ์์ด๋ ๋ป์ ๊ฐ์ง๊ณ ์๋ค.
๊ทธ๋์ ๊ทธ๋ฅ ์ฝ๊ฒ ์๊ฐํด์ ์ฝ๋ฉ ๋ฌธ์ ๋ฅผ ํ ๋ ์์ฌ์์ด์ฒ๋ผ ์ง๊ธ ํ์ฌ ๊ฐ์ฅ ์ข์ ์ ํ, ๊ฐ์ฅ ์ต์ ์ ์ ํ๋ง ํ๋ฉด ๋๋ค! ๋์ค์ ์ด๋ป๊ฒ ๋๋ ๊ฐ์ ์ผ๋จ์ ์ ์ผ ์ต์ ์ ์ ํ์ ๊ณ์ ํด๋๊ฐ๋ฉด์ ์ ์ฒด์ ์ผ๋ก๋ ๊ทธ๋ฅ ์ต์ ์ ์ ํ์ด์๊ธฐ๋ฅผ ๋ฐ๋ผ๋ ๊ฒ์ด๋ค.
์์ ๋ฌธ์ (๋ฐฑ์ค 5585๋ฒ)
์๋์ ์ฃผ๋๋ฐ ๊ฑฐ์ค๋ฆ๋ ๊ฐ์๊ฐ ๊ฐ์ฅ ์ ์ ๋ง๋ค์ด๋ณด๋ ๋ฌธ์ ์ด๋ค. ์๋์ผ๋ก๋ 500์, 100์, 50์, 10์, 5์, 1์์ด ๋ฌดํ๊ฐ๊ฐ ์๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
Hint
1. ๊ฐ์๊ฐ ๊ฐ์ฅ ์ ์ผ๋ ค๋ฉด ๊ธ์ก์ด ํฐ๊ฑฐ๋ถํฐ ์ฃผ๋ฉด ๋ ๊น ์์๊ฑฐ๋ถํฐ ์ฃผ๋ฉด ๋ ๊น?
ํด๊ฒฐ
# ๋ฌธ์ ์์ ์ค ์
๋ ฅ๊ฐ์ ๋ด์ผํ ๊ธ์ก์ด๋ฏ๋ก 1000์ ์งํ๋ฅผ ํ์ฅ ์คฌ์ ๋ ๋ฐ์ ์๋๋ถํฐ ๊ณ์ฐํด์ผ ํ๋ค.
change = 1000 - int(input())
en = [500, 100, 50, 10, 5, 1]
count = 0
# ํฐ ๊ธ์ก๋ถํฐ ์ฑ์๋๊ฐ๋ฉด ๋๋ค.
for coin in en:
if coin > change:
continue
count += change // coin # ์ฝ์ธ ๊ฐ์ ๊ตฌํ๊ธฐ
change %= coin # ์ฝ์ธ ์ฃผ๊ณ ๋จ์ ๋๋จธ์ง ๊ธ์ก ๊ตฌํ๊ธฐ
# ๋์ด์ ๋ผ ๊ธ์ก์ด ์์ผ๋ฉด ๋ฉ์ถฐ!
if change == 0:
break
# ์๋ ๊ฐ์ ๋ฐํ
print(count)
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํด ํฐ ๊ธ์ก๋ถํฐ ์ฐ์ ์ ์ผ๋ก ์ฑ์๋๊ฐ๋ค๋ณด๋ฉด ๊ฐ์ฅ ์ ์ ๊ฐ์์ ์๋์ ๊ตฌํ ์ ์๋ค.
