-
[๋ฐฑ์ค 11047๋ฒ] ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ / Greedy AlgorithmData Engineering/์๊ณ ๋ฆฌ์ฆ - Python 2021. 6. 27. 15:57
" The present is more important than the future. "
๐๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ(Greedy Algorithm)
: ์ง๊ธ ์ด ์๊ฐ์ ์ต์ ์ธ ๋ต์ ์ ํํ๋ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ๊ธฐ๋ฒ์ด๋ค.
์ฆ, ๋ฏธ๋๋ณด๋ค ํ์ฌ์ ์ด์ต์ ์ถ๊ตฌํ๋ค๊ณ ์๊ฐํ๋ฉด ์ดํด๊ฐ ์ฝ๋ค.
๊ทธ๋ฐ๋ฐ ํ์ฌ์ ์ด์ต๋ง ์ถ๊ตฌํ๋ ๊ฒ์ด๋ฏ๋ก ์ต์ ์ ์ ๋ต์ด ์๋ ์ ์๋ค.
๐๊ทธ๋ผ ์ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ๊น?
: ์ด ์๊ฐ์ ์ต์ ์ ์ ํ์ ํ๋ฏ๋ก ์ฑ๋ฅ์ด ๋น ๋ฅด๋ค!
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ต์ ์ ์ ๋ต์ ๊ฐ๊น์ด ๊ทผ์ฌ์ ์ธ ๋ต์ ๋ด๋ฆด ์ ์๋ค.
[ ๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ 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
(์ค๋ต)
๋ฌธ์ : ์๊ฐ ์ด๊ณผ
ํ๋ฆฐ ์ด์ : ์ด๋ฏธ ๋น๊ตํ ๋์ ๊ฐ์น๋ค์ ๋ค์ ํ์ธํ ํ์๊ฐ ์๋ค. ๊ทธ๋ฐ๋ฐ ๋๋ ๋ชจ๋ ๋์ ๊ฐ์น์ ๋น๊ตํ๋ ค๊ณ ํ๋ค.
n,k=map(int, input().split()) ans=0 money=k vals=[] for i in range(n): vals.append(int(input())) while money!=0: for i in range(n-1,-1,-1): if vals[i]<money: ans+=money//vals[i] money-=(money//vals[i])*vals[i] break else: continue print(ans)
(์ ๋ต)
n,k=map(int, input().split()) ans=0 vals=[] for i in range(n): vals.append(int(input())) vals.sort(reverse=True) for i in vals: if k==0: break ans+=k//i k%=i print(ans)
(์ ๋ต2)
n,k=map(int, input().split()) ans=0 vals=[] for i in range(n): vals.append(int(input())) while k>0: v=vals.pop() ans+=k//v k%=v print(ans)
<๊ณต๋ถ>
โพ ๋ฆฌ์คํธ์ ์์๋ฅผ ์ญ์ผ๋ก ์ฝ๊ณ ์ถ์ ๊ฒฝ์ฐ list.sort(reverse=True) ๋ฅผ ์ฌ์ฉํ๋ฉด ํธ๋ฆฌํ๋ค.
โพ ์์ ๋ณด๋ค ํฐ ์๋ก ๋๋ด์ ๋ ๋ชซ์ 0์ด ๋๋ค.
ex. print(400//100)=4
ex. print(400//500)=0
โพ pop(i): i๋ฒ์งธ ๋ฆฌ์คํธ ์์๋ฅผ ๊บผ๋ด๋ฉด์ ๋์์ ์ญ์ ์ํจ๋ค.
test=['๊ฐ๋ฐฉ','๋๋น','๋ค๋์ฅ'] print(test.pop(0)) #๊ฐ๋ฐฉ print(test) #['๋๋น', '๋ค๋์ฅ']
โพ pop(): (์ธ๋ฑ์ค๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด) ๋ฆฌ์คํธ์ ๋ง์ง๋ง ํญ๋ชฉ์ ๊บผ๋ด๋ฉด์ ๋์์ ์ญ์ ์ํจ๋ค.
test=['๊ฐ๋ฐฉ','๋๋น','๋ค๋์ฅ'] for i in range(3): print(test.pop()) #๋ค๋์ฅ #๋๋น #๊ฐ๋ฐฉ