๊ตฌ๋ช ๋ณดํธ
ํ์ด์ฌ ์๊ณ ๋ฆฌ์ฆ
๊ตฌ๋ช ๋ณดํธ - ํ๋ก๊ทธ๋๋จธ์ค
๋ฌธ์
ํด์ค
- ์ถ์ ์๋๊ฐ ํฌํฌ์ธํฐ์ธ๋ฏ ํด์ ํฌํฌ์ธํฐ๋ก ํด๊ฒฐํ๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ๊ตฌํ๋ ๊ตฌ๋ช
๋ณดํธ์ ์ํฉ์ ํฌ์ปค์ค๋ฅผ ๋ง์ถ๋๊ฒ ํฌ์ธํธ๋ค.
- ๊ตฌ๋ช ๋ณดํธ๋ 1๋ช ํ๊ฑฐ๋ 2๋ช ํ๋ ๋๊ฐ์ง ์ผ์ด์ค๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- ์ ๋ ฌ๋์ด ์๋ค๋ฉด ๋ชธ๋ฌด๊ฒ๊ฐ ๊ฐ์ฅ ์์ ์ฌ๋๊ณผ ๊ฐ์ฅ ํฐ ์ฌ๋์ ํฉ์ ๊ธฐ์ค์ผ๋ก ์๊ฐํ๋๊ฒ ํฉ๋ฆฌ์ ์ด๋ค.
- ์ฌ๊ธฐ์ ๋ ์ฌ๋์ ํฉ์ด limit๋ณด๋ค ํฌ๋ค๋ฉด, ๋ชธ๋ฌด๊ฒ๊ฐ ๊ฐ์ฅ ํฐ ์ฌ๋๋ถํฐ ํผ์ ๊ตฌ๋ช ๋ณดํธ๋ก ํ์ ๋ณด๋ด๋ฉด ๋๋ค.
- ๋ฐ๋ฉด์ ๋ ์ฌ๋์ ํฉ์ด limit๋ณด๋ค ์์ ์ํฉ์ด ๋ํ๋๋ค๋ฉด, ๊ทธ๋ ๋น๋ก์ 2๋ช ์ ๊ตฌ๋ช ๋ณดํธ์ ํ์์ ๋ณด๋ผ ์ ์๋ค.
- ์กฐ๊ฑด์ ์๋ฉ ๋ฌ์์ if-else๋ฌธ์ ๋ง๋ค๋ค๊ฐ ๊ฝค ๊ณ ๋ฏผํ๋๋ฐ, ๊ทธ๊ฑฐ๋ณด๋จ ๋ฉ์ธ-์์ธ๋ฅผ ํ์ฉํ if๋ฌธ์ผ๋ก ์ ๊ทผํ๋๊ฒ ๋ ๊น๋ํ๋ค.(๋ฌด์๋ณด๋ค ์๊ฐ๋ ์ค๋๊ฑธ๋ฆฌ๊ณ if ์กฐ๊ฑด์ ์ ํํ๊ฒ ๋ง๋๋๊ฒ๋ ๊ต์ฅํ ๊น๋ค๋กญ๋ค.)
1. ์ฒ์ ํ์ด
def solution(people, limit):
people = sorted(people)
num = len(people)
left, right = 0, num - 1
cnt = 0
while left <= right:
# ๊ตฌ๋ช
๋ณดํธ ๊ฐฏ์๋ง์ ๊ตฌํ๊ธฐ ๋๋ฌธ์ ํ
์คํธ ์ผ์ด์ค๋ ํต๊ณผํ์ง๋ง ๋
ผ๋ฆฌ์ ์ผ๋ก๋ ๋ง์ง ์๋ค.
if people[left] + people[right] > limit:
right -= 1
cnt += 1
else:
left += 1
right -= 1
cnt += 1
return cnt
2. ๋ฆฌํฉํ ๋งํ ํ์ด
def solution(people, limit):
people = sorted(people)
num = len(people)
left, right = 0, num - 1
cnt = 0
while left < right:
# ์กฐ๊ฑด๋ฌธ์ด ํจ์ฌ ๋จ์ํด์ก๋ค.
if people[left] + people[right] <= limit:
left += 1
cnt += 1
right -= 1
if left == right: # ํผ์ ๋จ์์ ๋, ์ด๋ ๊ฒ ๋ฐ๋ก ์ฒ๋ฆฌํด์ค์ผ ๋
ผ๋ฆฌ์ ์ผ๋ก ์ ํํ๋ค.
cnt += 1
return cnt