<Greedy> ๋ฐฑ์ค 11047๋ฒ. ๋์ 0
๋ฌธ์ ์ถ์ฒ : https://www.acmicpc.net/problem/11047
11047๋ฒ: ๋์ 0
์ฒซ์งธ ์ค์ N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๋์ ์ ๊ฐ์น Ai๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ์ฃผ์ด์ง๋ค. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2์ธ ๊ฒฝ์ฐ์ Ai๋ Ai-1์ ๋ฐฐ์)
www.acmicpc.net
์ด ๋ฌธ์ ๊ฐ ์ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๊น?
์ด ๋ถ๋ถ์ ์ง์คํด์ผ ํ๋ค. Ai๋ A(i-1)์ ๋ฐฐ์์ด๋ฏ๋ก ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด ์ ์ฉ๋์ผํ๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
N, K = map(int, input().split())
coin_list = list()
count = 0
for i in range(N):
coin_list.append(int(input()))
for i in reversed(range(N)):
if(K//coin_list[i]<1):
continue
else :
a = K//coin_list[i]
count += a
K = K%coin_list[i]
print(count)
๋ด ์ฝ๋์ด๋ค. ์ฌ์ฐ๋ ์ค๋ช ์ ์๋ตํ๋ค
๋ค๋ฅธ ์ฌ๋๋ค์ ์ฝ๋๋ฅผ ์ดํด๋ดค๋๋ฐ,
N, K = map(int, input().split())
coin_lst = list()
for i in range(N):
coin_lst.append(int(input()))
count = 0
for i in reversed(range(N)):
count += K//coin_lst[i] #์นด์ดํธ ๊ฐ์ K๋ฅผ ๋์ ์ผ๋ก ๋๋ ๋ชซ์ ๋ํด์ค
K = K%coin_lst[i] # K๋ ๋์ ์ผ๋ก ๋๋ ๋๋จธ์ง๋ก ๊ณ์ ๋ฐ๋ณต
print(count)
๋ฐ๋ณต๋ฌธ์ ๊ฑฐ๊พธ๋ก ๋๋ฉด์ count์ K//coin_list[i]๋งํผ ๋ํด์ฃผ๊ณ ๋๋จธ์ง๋ฅผ K์ ๋์ ํ๋ฉด ๋๋ค. ์กฐ๊ฑด๋ฌธ์ด ํ์์๋ ์ด์ ๋, ์กฐ๊ฑด์ ๋ถํฉํ์ง ์์ ๋, K//coin_list[i] ๋ชซ์ด 0์ด๊ธฐ ๋๋ฌธ์ด๋ค ใ ..์ด๊ฑธ ์๊ฐํ์ง ๋ชปํ ๋๋ ๋ฉ์ถฉ์ด..
ํ์ด์ฌ์ ์ฝํ ์ค๋นํ๋ฉด์ ์ฒ์ ๊ณต๋ถํ๋๋ฐ, ์ธ์ด๋ ๋งค์ฐ ์ฝ๊ณ ๋๋ฌด ์ฌ๋ฏธ์๋ค! ๊ทผ๋ฐ ์ฝํ ๊น์ง ์ผ๋ง ๋จ์ง ์์๋๋ฐ ์ฒ์ ๊ณต๋ถํด์ ๋๋ฌด๋๋ฌด ๋ถ์ํ๋ค ํํ