๐ธ ๋ฌธ์ ์ ๊ทผ ๋ฐฉ์
- ๊ฐ์ฅ ๋ฌด๊ฑฐ์ด ์ฌ๋์ ๋จผ์ ํ์ด๋ค.
- ๊ฐ์ฅ ๊ฐ๋ฒผ์ด ์ฌ๋๋ถํฐ ๋ณดํธ์ ํ์๋๊ฐ๋ค.
- ๋ณดํธ ๋ฌด๊ฒ๊ฐ limit๋ฅผ ์ด๊ณผํ๋ฉด, ๊ฐ๋ฒผ์ด ์ฌ๋์ ํ ๋ช ๋ด๋ฆฌ๊ณ 1๋ฒ์ผ๋ก ๋์๊ฐ๋ค.
โ ์ฃผ์ ์ฌํญ
์ฒ์์ ๋ฆฌ์คํธ์ ์์๊ฐ ๋จ์์์ ๋๊น์ง While๋ฌธ์ ๋ฐ๋ณตํ์๋ค.
ํ์ง๋ง ๋ฆฌ์คํธ ์ญ์ ์ฐ์ฐ ์ํ ์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค.
๋ฆฌ์คํธ ์์ ์ต๋๊ฐ์ด 50,000์์๋ ๋นํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํ๋ช ๋์๋ค.
๋ฐ๋ผ์ ๋ฆฌ์คํธ๋ฅผ ์ญ์ ํ๋ ๋์ , left, index ํฌ์ธํฐ๋ฅผ ๋๊ณ indexingํ์๋ค.
๐ง Source Code
def solution(people, limit):
''' https://programmers.co.kr/learn/courses/30/lessons/42885
Notes:
1. ๊ฐ์ฅ ๋ฌด๊ฑฐ์ด ์ฌ๋์ ๋จผ์ ํ์ด ํ ๊ฐ๋ฒผ์ด ์ฌ๋์ ํ์ ๋๊ฐ๋ค.
2. ๋ฆฌ์คํธ ์์๋ฅผ ์ญ์ ํ๋ ์ฐ์ฐ ๋์ indexing์ผ๋ก ๋์ฒดํ๋ค.
Args:
people (list): ๊ตฌ์กฐํ ์ฌ๋์ ์ฒด์ค(int)๋ค์ด ๋ด๊ธด ๋ฆฌ์คํธ
limit (int): ๊ตฌ๋ช
๋ณดํธ์ ์ต๋ ๋ฌด๊ฒ
Returns:
cnt (int): ํ์ํ ์ต์ ๊ตฌ๋ช
๋ณดํธ ์
'''
people.sort(reverse=True)
cnt = 0
left, right = 0, len(people)-1
while left <= right:
boat = people[left]
cnt += 1
left += 1
while boat <= limit:
if left > right:
return cnt
small = people[right]
boat += small
right -= 1
right += 1
return cnt
def worst_solution(people, limit):
people.sort(reverse=True)
cnt = 0
while people:
boat = people.pop(0)
cnt += 1
while boat <= limit:
if len(people) == 0:
return cnt
small = people.pop()
boat += small
people.append(small)
return cnt
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - ๊ธฐ๋ฅ ๊ฐ๋ฐ (์คํ,ํ) (0) | 2021.06.25 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - ํ๋ฆฐํฐ(์คํ,ํ) (0) | 2021.06.24 |
ํ๋ก๊ทธ๋๋จธ์ค - ํฐ ์ ๋ง๋ค๊ธฐ(Greedy) (0) | 2021.06.22 |
ํ๋ก๊ทธ๋๋จธ์ค - ์กฐ์ด์คํฑ (Greedy) (0) | 2021.06.21 |
ํ๋ก๊ทธ๋๋จธ์ค - ์ฒด์ก๋ณต (Greedy) (0) | 2021.06.20 |