[ํ๋ก๊ทธ๋๋จธ์ค/python] ํ์๋ฒ(Greedy) : ๊ตฌ๋ช ๋ณดํธ
๋ฌธ์ ์ค๋ช
๋ฌด์ธ๋์ ๊ฐํ ์ฌ๋๋ค์ ๊ตฌ๋ช ๋ณดํธ๋ฅผ ์ด์ฉํ์ฌ ๊ตฌ์ถํ๋ ค๊ณ ํฉ๋๋ค. ๊ตฌ๋ช ๋ณดํธ๋ ์์์ ํ ๋ฒ์ ์ต๋ 2๋ช ์ฉ ๋ฐ์ ํ ์ ์๊ณ , ๋ฌด๊ฒ ์ ํ๋ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ฌ๋๋ค์ ๋ชธ๋ฌด๊ฒ๊ฐ [70kg, 50kg, 80kg, 50kg]์ด๊ณ ๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ์ด 100kg์ด๋ผ๋ฉด 2๋ฒ์งธ ์ฌ๋๊ณผ 4๋ฒ์งธ ์ฌ๋์ ๊ฐ์ด ํ ์ ์์ง๋ง 1๋ฒ์งธ ์ฌ๋๊ณผ 3๋ฒ์งธ ์ฌ๋์ ๋ฌด๊ฒ์ ํฉ์ 150kg์ด๋ฏ๋ก ๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ์ ์ด๊ณผํ์ฌ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
๊ตฌ๋ช ๋ณดํธ๋ฅผ ์ต๋ํ ์ ๊ฒ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ฌ๋์ ๊ตฌ์ถํ๋ ค๊ณ ํฉ๋๋ค.
์ฌ๋๋ค์ ๋ชธ๋ฌด๊ฒ๋ฅผ ๋ด์ ๋ฐฐ์ด people๊ณผ ๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ limit๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ชจ๋ ์ฌ๋์ ๊ตฌ์ถํ๊ธฐ ์ํด ํ์ํ ๊ตฌ๋ช ๋ณดํธ ๊ฐ์์ ์ต์๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ๋ฌด์ธ๋์ ๊ฐํ ์ฌ๋์ 1๋ช ์ด์ 50,000๋ช ์ดํ์ ๋๋ค.
- ๊ฐ ์ฌ๋์ ๋ชธ๋ฌด๊ฒ๋ 40kg ์ด์ 240kg ์ดํ์ ๋๋ค.
- ๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ์ 40kg ์ด์ 240kg ์ดํ์ ๋๋ค.
- ๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ์ ํญ์ ์ฌ๋๋ค์ ๋ชธ๋ฌด๊ฒ ์ค ์ต๋๊ฐ๋ณด๋ค ํฌ๊ฒ ์ฃผ์ด์ง๋ฏ๋ก ์ฌ๋๋ค์ ๊ตฌ์ถํ ์ ์๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
์ ๋ต
def solution(people, limit):
answer = 0
people.sort(reverse=True)
for p in people:
answer += 1
if p + people[-1] <= limit:
people.pop()
return answer
์ฐ์ ์ฌ๋๋ค์ ๋ชธ๋ฌด๊ฒ๋ฅผ ๋ด์ ๋ฐฐ์ด people์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ ํ ๋ฐ๋ณต๋ฌธ์ ํตํดpeople์ ๊ฐ์ ํ๋ํ๋ ์ดํด๋ณธ๋ค.
ํ์ํ ๊ตฌ๋ช ๋ณดํธ์ ๊ฐ์๋ฅผ ์ ์ฅํ answer์ ๊ฐ์ ํ๋ ์ฌ๋ ค์ฃผ๊ณ ํจ๊ป ํ ์ ์๋ ์ฌ๋์ด ์๋์ง ์ดํ๋ค.
๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ผ๋ฏ๋ก ๋ฐฐ์ด์ ๊ฐ์ฅ ๋ง์ง๋ง์ ์๋ ์ฌ๋ people[-1]์ด ๊ฐ์ฅ ์ ์ ๋ชธ๋ฌด๊ฒ๊ฐ ๋๋ค.
๊ฐ์ฅ ์ ์ ๋ชธ๋ฌด๊ฒ๋ฅผ ๊ฐ์ง ๋ง์ง๋ง ์ฌ๋์ด ํจ๊ปํ ์ ์๋ค๋ฉด ํผ์ ํ์ผ๋๊ณ
๋ง์ง๋ง ์ฌ๋๊ณผ ๋ํ ๋ชธ๋ฌด๊ฒ๊ฐ limit๋ณด๋ค ์ ๋ค๋ฉด ํจ๊ป ํ ์ ์์ผ๋ฏ๋ก pop์ ํตํด people ๋ฐฐ์ด์์ ์ ์ธ์ํจ๋ค.
'๐์๊ณ ๋ฆฌ์ฆ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค/python] ํ์๋ฒ(Greedy) : ์กฐ์ด์คํฑ (0) | 2021.03.29 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค/python] ํด์(hash) : ์ ํ๋ฒํธ ๋ชฉ๋ก (0) | 2021.03.23 |
[ํ๋ก๊ทธ๋๋จธ์ค/python] ํด์(Hash) : ์์ฃผํ์ง ๋ชปํ ์ ์ (0) | 2021.03.23 |
[ํ๋ก๊ทธ๋๋จธ์ค/python] ํด์(Hash) : ์์ฅ (0) | 2021.03.23 |
[ํ๋ก๊ทธ๋๋จธ์ค/python] ํ์๋ฒ(Greedy) : ์ฒด์ก๋ณต (0) | 2021.03.17 |