์ฝ”ํ…Œ์ค€๋น„

<Greedy> ๋ฐฑ์ค€ 11047๋ฒˆ. ๋™์ „0

์š”๋Œœ๋‹ค 2022. 7. 22. 16:52

๋ฌธ์ œ ์ถœ์ฒ˜ : 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์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค ใ… ..์ด๊ฑธ ์ƒ๊ฐํ•˜์ง€ ๋ชปํ•œ ๋‚˜๋Š” ๋ฉ์ถฉ์ด..

 

ํŒŒ์ด์ฌ์€ ์ฝ”ํ…Œ ์ค€๋น„ํ•˜๋ฉด์„œ ์ฒ˜์Œ ๊ณต๋ถ€ํ•˜๋Š”๋ฐ, ์–ธ์–ด๋„ ๋งค์šฐ ์‰ฝ๊ณ  ๋„ˆ๋ฌด ์žฌ๋ฏธ์žˆ๋‹ค! ๊ทผ๋ฐ ์ฝ”ํ…Œ๊นŒ์ง€ ์–ผ๋งˆ ๋‚จ์ง€ ์•Š์•˜๋Š”๋ฐ ์ฒ˜์Œ ๊ณต๋ถ€ํ•ด์„œ ๋„ˆ๋ฌด๋„ˆ๋ฌด ๋ถˆ์•ˆํ•˜๋‹ค ํ‘ํ‘