๋ฌธ์ ์ค๋ช
๋ฌด์ธ๋์ ๊ฐํ ์ฌ๋๋ค์ ๊ตฌ๋ช ๋ณดํธ๋ฅผ ์ด์ฉํ์ฌ ๊ตฌ์ถํ๋ ค๊ณ ํฉ๋๋ค. ๊ตฌ๋ช ๋ณดํธ๋ ์์์ ํ ๋ฒ์ ์ต๋ 2๋ช ์ฉ ๋ฐ์ ํ ์ ์๊ณ , ๋ฌด๊ฒ ์ ํ๋ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ฌ๋๋ค์ ๋ชธ๋ฌด๊ฒ๊ฐ [70kg, 50kg, 80kg, 50kg]์ด๊ณ ๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ์ด 100kg์ด๋ผ๋ฉด 2๋ฒ์งธ ์ฌ๋๊ณผ 4๋ฒ์งธ ์ฌ๋์ ๊ฐ์ด ํ ์ ์์ง๋ง 1๋ฒ์งธ ์ฌ๋๊ณผ 3๋ฒ์งธ ์ฌ๋์ ๋ฌด๊ฒ์ ํฉ์ 150kg์ด๋ฏ๋ก ๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ์ ์ด๊ณผํ์ฌ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
๊ตฌ๋ช ๋ณดํธ๋ฅผ ์ต๋ํ ์ ๊ฒ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ฌ๋์ ๊ตฌ์ถํ๋ ค๊ณ ํฉ๋๋ค.
์ฌ๋๋ค์ ๋ชธ๋ฌด๊ฒ๋ฅผ ๋ด์ ๋ฐฐ์ด people๊ณผ ๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ limit๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ชจ๋ ์ฌ๋์ ๊ตฌ์ถํ๊ธฐ ์ํด ํ์ํ ๊ตฌ๋ช ๋ณดํธ ๊ฐ์์ ์ต์๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- ๋ฌด์ธ๋์ ๊ฐํ ์ฌ๋์ 1๋ช ์ด์ 50,000๋ช ์ดํ์ ๋๋ค.
- ๊ฐ ์ฌ๋์ ๋ชธ๋ฌด๊ฒ๋ 40kg ์ด์ 240kg ์ดํ์ ๋๋ค.
- ๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ์ 40kg ์ด์ 240kg ์ดํ์ ๋๋ค.
- ๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ์ ํญ์ ์ฌ๋๋ค์ ๋ชธ๋ฌด๊ฒ ์ค ์ต๋๊ฐ๋ณด๋ค ํฌ๊ฒ ์ฃผ์ด์ง๋ฏ๋ก ์ฌ๋๋ค์ ๊ตฌ์ถํ ์ ์๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
์
์ถ๋ ฅ ์
people | limit | return |
[70, 50, 80, 50] | 100 | 3 |
[70, 80, 50] | 100 | 3 |
๋์ ์๋ฃจ์
์ ํ์ ์ธ Greedy ๋ฌธ์ ์ด๋ค. ํต์ฌ์ ํ ๋ฒ์ ์ต๋ 2๋ช ์ฉ๋ฐ์ ํ ์ ์๋ค๋ ๊ฒ์ ์๋ค. ์ธ์์ ์ ํ์ด ์์๋ค๋ฉด ๋ฌด๊ฒ๋ง์ผ๋ก ์ธก์ ํ์ฌ ๋ ๊น๋ค๋ก์ด ๋ฌธ์ ๊ฐ ๋์์ ์ ์์ผ๋, ์ธ์ ์ ํ์ด ์์ผ๋ฏ๋ก ๊ฐ์ฅ ๋ฌด๊ฒ๊ณ ๊ฐ์ฅ ๊ฐ๋ฒผ์ด ์ฌ๋์ ๋ฌด๊ฒ ํฉ์ ๊ณ์ ๊ตฌํ๋ฉฐ count ๋ฅผ ๋์ฌ๊ฐ๋ ๋ฐฉ๋ฒ์ ์ธ ์ ์์๋ค.
def solution(people, limit):
people.sort()
left = 0
right = len(people) - 1
count = 0
while left <= right:
if people[left] + people[right] <= limit:
left += 1
right -= 1
else:
right -= 1
count += 1
return count
'๐ป DEV > ใด problems' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์ ๋ ฌ : H-Index (0) | 2021.07.13 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ ํ์ : ์นดํซ (0) | 2021.07.13 |
[ํ๋ก๊ทธ๋๋จธ์ค] N๊ฐ์ ์ต์๊ณต๋ฐฐ์ (0) | 2021.07.13 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํด์: ์์ฅ (0) | 2021.07.13 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ ๋ ฌ: ๊ฐ์ฅ ํฐ ์ (0) | 2021.07.13 |
๋๊ธ