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๊ฐ€ ๋œ๋‹ค.