Algorithm Greedy
์๊ณ ๋ฆฌ์ฆ
๊ทธ๋ฆฌ๋(ํ์๋ฒ) ์๊ณ ๋ฆฌ์ฆ
ํ์ฌ ์ํฉ์์ ๋น์ฅ ์ข์ ๊ฒ๋ง ๊ณ ๋ฅด๋ ๋ฐฉ๋ฒ
<๋์ ๊ฑฐ์ฌ๋ฌ์ฃผ๋="" ํ๋ก๊ทธ๋จ="">๋์ >
Input(๊ฑฐ์ฌ๋ฌ ์ค์ผํ๋ ๊ธ์ก), Out(์ด ๋์ ์ ๊ฐฏ์)
n = 1260
coins = [500, 100, 50, 10]
count = 0
for coin in coins:
print(str(int(coin)) + "์: " + str(int(n / coin)) + "๊ฐ")
count+=int(n / coin)
n %= coin
print(count)
500์: 2๊ฐ
100์: 2๊ฐ
50์: 1๊ฐ
10์: 1๊ฐ
6
ํํ์ ์ข ๋ฅ ๋งํผ ๋ฐ๋ณต๋ฌธ์ ์ํํ๊ธฐ ๋๋ฌธ์ ์๊ฐ ๋ณต์ก๋๋ O(K)์ด๋ค
<1์ด ๋ ๋๊น์ง>
์ด๋ ํ ์ N์ด 1์ด ๋ ๋๊น์ง ๋ค๋ฅธ์ ๋ ๊ณผ์ ์ค ํ๋๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ํํ๋ คํจ
1. N์์ 1์ ๋บ
2. N์ K๋ก ๋๋
2๋ฒ ์จฐ ์ฐ์ฐ์ ์ฌ์ฉํ ๊ฒฝ์ฐ๋ 0์ผ๋ก ๋๋์ด ๋จ์ด์ง๋๋ง ์ฌ์ฉ ๊ฐ๋ฅ
In(N: ์ด๋ ํ ์, K: ๋๋ ์ผํ ์) Out(M: ๊ณผ์ ์ ์ํํ ์ต์๊ฐ)
n,k = map(int, input().split())
count = 0
while n > 1:
if(n % k == 0):
n //= k
else:
n -= 1
count += 1
print(count)
25 5
2
๋ฐ๋ณต๋ฌธ ์ด๋ฐ, n์ ๋จผ์ ๋๋๊ธฐ ๋๋ฌธ์ ์๊ฐ ๋ณต์ก๋๋ log๊ฐ ๋๋ค.