: ํ์ฌ ์ํฉ์์ ์ง๊ธ ๋น์ฅ ์ข์ ๊ฒ๋ง ๊ณ ๋ฅด๋ ๋ฐฉ๋ฒ
๐ ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํ ์ต์ํ์ ์์ด๋์ด๋ฅผ ๋ ์ฌ๋ฆด ์ ์๋ ๋ฅ๋ ฅ ์๊ตฌ
๐ ์ ๋น์ฑ ๋ถ์
์ด ์ค์!
โ ๋จ์ํ ๊ฐ์ฅ ์ข์ ๋ณด์ด๋ ๊ฒ์ ๋ฐ๋ณต์ ์ผ๋ก ์ ํํด๋ ์ต์ ์ ํด๋ฅผ ๊ตฌํ ์ ์๋์ง ๊ฒํ
: ์ต์ ์ ํด๊ฐ ๋ณด์ฅ๋์ง ์๊ธฐ ๋๋ฌธ
ex) ๊ฑฐ์ค๋ฆ ๋
์นด์ดํฐ์ ๊ฑฐ์ค๋ฆ๋์ผ๋ก ์ฌ์ฉํ 500์, 100์, 50์, 10์์ง๋ฆฌ ๋์ ์ด ๋ฌดํ์ด ์กด์ฌํ ๋,
์๋์๊ฒ ๊ฑฐ์ฌ๋ฌ ์ค N์์ ์ต์ ๋์ ์ ๊ฐ์๋ฅผ ๊ตฌํ์์ค. ๋จ, N์ ํญ์ 10์ ๋ฐฐ์
cf) 800์์ ๊ฑฐ์ฌ๋ฌ์ผ ํ๋๋ฐ ํํ ๋จ์๊ฐ 500, 400, 100 ์ธ ๊ฒฝ์ฐ
n = 1260
count = 0
#ํฐ ๋จ์ ํํ๋ถํฐ ์ฐจ๋ก๋๋ก ํ์ธ
mon = [500, 100, 50, 10]
for coin in mon:
count += n//coin # ํด๋น ํํ๋ก ๊ฑฐ์ฌ๋ฌ ์ค ์ ์๋ ๋์ ์ ๊ฐ์
n %= coin # ํด๋น ํํ ๋จ์ ๋ณด๋ค ์์ ๋จ์๊ฐ ํ์ํ ๋
print(count)
ํํ์ ์ข
๋ฅ๊ฐ K๋ผ๊ณ ํ ๋, ์์ค์ฝ๋์ ์๊ฐ ๋ณต์ก๋ O(k)
'''
๋ฌธ์ : ์ด๋ค ์ N์ด 1์ด ๋ ๋๊น์ง ๋ค์์ ๋ ๊ณผ์ ์ค ํ๋๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ ํํ์ฌ ์ํ
(๋จ, ๋๋ฒ์งธ ์ฐ์ฐ์ N/K๋ก ๋๋์ด ๋จ์ด์ง๋๋ง!)
1. N - 1
2. N / K
! ์ ๋น์ฑ
# 2๋ฒ์ ์ํํ๋ ๊ฒ ์ต์๊ฐ์ ๋ง๋๋ ๋ฐ ์ ๋ฆฌ -> ๋๋๊ธฐ๋ N ๊ฐ์ ํฌ๊ฒ ๋ฎ์ถ๋ฏ๋ก
# 1๋ฒ์ 2๋ฒ์ ์ํํ์ง ๋ชปํ ๋๋ง ์ํํ๋ ๋ฐฉ๋ฒ ์ฌ์ฉ
'''
N, K = map(int, input().split())
count = 0
while N != 1: # N์ด 1์ด ์๋ ๋์ ์คํ
count += 1
if N % K == 0: # N์ด K์ ๋ฐฐ์์ด๋ฉด
N //= K # ๋ชซ์ N์ผ๋ก
else:
N -= 1
print(count)
์๊ฐ๋ณต์ก๋ O() : count์ ํ์ ๋งํผ
โ
์ ๋น์ฑ
: N์ด ์๋ฌด๋ฆฌ ํฐ ์์ฌ๋ K(K โฅ 2)๋ก ๊ณ์ ๋๋๋ค๋ฉด ๊ธฐํ ๊ธ์์ ์ผ๋ก ๋น ๋ฅด๊ฒ ์๋ฅผ ์ค์ผ ์ ์์!
## ์ฝ๋ ์๋ฃจ์
N, K = map(int, input().split())
res = 0
while True:
target = (N//K)*K # N๋ณด๋ค ์์ K์ ์ต๋ ๋ฐฐ์ ๊ฐ
result += (n - target) # K์ ๋ฐฐ์๊ฐ ์๋ ์, 1๋ฒ ๊ณผ์ (-1)์ ์ํ ํด์ผํ๋ ๊ฐ
n = target # K์ ์ต๋ ๋ฐฐ์ ๊ฐ
if n < k: # K๋ณด๋ค ์์์ ๋๋ ์ง์ง ์์ ๊ฐ์ด ์๋ค๋ฉด ๋ฐ๋ณต๋ฌธ ํ์ถ
break
result += 1 # N/K๋ฅผ ๊ณ์ฐํ ํ์ ์ฆ๊ฐ ์ํค๊ธฐ
n //= k # K๋ก ๋๋ ์ค์ธ N๊ฐ ๊ณ์ฐํ๊ธฐ
result += (n-1) # K๋ณด๋ค ์์์ ๋๋ ์ง์ง ์์ ๊ฐ์ด ์๋ค๋ฉด 1์ด ๋ ๋๊น์ง 1๋จ๊ณ ์ํํ๋ ๊ฐ ๋ํด์ฃผ๊ธฐ
print(result)
์๊ฐ๋ณต์ก๋ O()
โ ํ ๋ฐ๋ณต๋ฌธ ์์์ 1, 2๋จ๊ณ๊ฐ ๋์ ์ํ๋๊ธฐ ๋๋ฌธ์ ํฐ ์ ์ผ์๋ก ๋ ์ ๋ฆฌํ๋ค