1) ๋ฌธ์ ์ค๋ช
- ๋ฌด์ธ๋์ ๊ฐํ ์ฌ๋๋ค์ ๊ตฌ๋ช ๋ณดํธ๋ฅผ ์ด์ฉํ์ฌ ๊ตฌ์ถํ๋ ค๊ณ ํฉ๋๋ค.
- ๊ตฌ๋ช ๋ณดํธ๋ ์์์ ํ ๋ฒ์ ์ต๋ 2๋ช ์ฉ ๋ฐ์ ํ ์ ์๊ณ , ๋ฌด๊ฒ ์ ํ๋ ์์ต๋๋ค.
- ์๋ฅผ ๋ค์ด, ์ฌ๋๋ค์ ๋ชธ๋ฌด๊ฒ๊ฐ [70kg, 50kg, 80kg, 50kg]์ด๊ณ ๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ์ด 100kg์ด๋ผ๋ฉด 2๋ฒ์งธ ์ฌ๋๊ณผ 4๋ฒ์งธ ์ฌ๋์ ๊ฐ์ด ํ ์ ์์ง๋ง 1๋ฒ์งธ ์ฌ๋๊ณผ 3๋ฒ์งธ ์ฌ๋์ ๋ฌด๊ฒ์ ํฉ์ 150kg์ด๋ฏ๋ก ๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ์ ์ด๊ณผํ์ฌ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
- ๊ตฌ๋ช ๋ณดํธ๋ฅผ ์ต๋ํ ์ ๊ฒ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ฌ๋์ ๊ตฌ์ถํ๋ ค๊ณ ํฉ๋๋ค.
- ์ฌ๋๋ค์ ๋ชธ๋ฌด๊ฒ๋ฅผ ๋ด์ ๋ฐฐ์ด people๊ณผ ๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ limit๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ชจ๋ ์ฌ๋์ ๊ตฌ์ถํ๊ธฐ ์ํด ํ์ํ ๊ตฌ๋ช ๋ณดํธ ๊ฐ์์ ์ต์๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
2) ์ ํ ์ฌํญ
- ๋ฌด์ธ๋์ ๊ฐํ ์ฌ๋์ 1๋ช ์ด์ 50,000๋ช ์ดํ์ ๋๋ค.
- ๊ฐ ์ฌ๋์ ๋ชธ๋ฌด๊ฒ๋ 40kg ์ด์ 240kg ์ดํ์ ๋๋ค.
- ๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ์ 40kg ์ด์ 240kg ์ดํ์ ๋๋ค.
- ๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ์ ํญ์ ์ฌ๋๋ค์ ๋ชธ๋ฌด๊ฒ ์ค ์ต๋๊ฐ๋ณด๋ค ํฌ๊ฒ ์ฃผ์ด์ง๋ฏ๋ก ์ฌ๋๋ค์ ๊ตฌ์ถํ ์ ์๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
3) ์ ์ถ๋ ฅ ์์
people limit return
[70, 50, 80, 50] 100 3
[70, 80, 50] 100 3
4) ์ ์ถ๋ ฅ ์์ ์ค๋ช
- ์์
5) ํ์ด
from collections import deque
def solution(people, limit):
# ์ ๋ ฌ (nlogn)
people.sort()
# Queue ์์ฑ ๋ฐ ์ด๊ธฐํ (n)
queue = deque()
for n in people:
queue.append(n)
# ๊ตฌ๋ช
๋ณดํธ ์ด์ฉ ํ์ (count) ๋ฐ ๋ฆฌ์คํธ ์ ์ธ
L = []
count = 0
while queue:
# ๋ฌด์ธ๋์ ๋จ์ ์ฌ๋์ด 2๋ช
์ด์์ผ ๊ฒฝ์ฐ
if len(queue) > 1:
min = queue.popleft()
max = queue.pop()
# ๊ฐ์ฅ ๋ฎ์, ๋์ ์ฌ๋ ๋ชธ๋ฌด๊ฒ์ ํฉ์ด limit๋ณด๋ค ํฐ ๊ฒฝ์ฐ
if min + max > limit:
# ๊ฐ์ฅ ๋์ ์ฌ๋์ ํผ์์ ๊ตฌ๋ช
๋ณดํธ๋ฅผ ์ด์ฉํด์ผ ํ๋ฏ๋ก
# ๋ณ๋์ List์ ์ถ๊ฐํ๊ณ ๊ฐ์ฅ ๋ฎ์ ์ฌ๋ ๋ชธ๋ฌด๊ฒ๋ ๋ค์
# Queue์ ์ถ๊ฐ
L.append(max)
queue.appendleft(min)
else:
# limit๋ณด๋ค ์์ผ๋ฏ๋ก count +1
count += 1
# ๋ฌด์ธ๋์ ๋จ์ ์ฌ๋์ด 1๋ช
์ด๋ฏ๋ก ๋ฃจํ ํ์ถ์ ์ํด queue์์ ๋จ์ ๋ฐ์ดํฐ ์ ๊ฑฐํ๊ณ count +1
else:
queue.popleft()
count += 1
return count + len(L)
[Reference]
๋ฐ์ํ
'๐ฏ Coding Test > ์๊ณ ๋ฆฌ์ฆ ํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค (Lv 2) - ํ๋ ฌ์ ๊ณฑ์ (1) | 2023.08.21 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค (Lv 2) - ๊ฒ์ ๋งต ์ต๋จ๊ฑฐ๋ฆฌ (1) | 2023.08.21 |
ํ๋ก๊ทธ๋๋จธ์ค (Lv 2) - ์์ด ๋๋ง์๊ธฐ (1) | 2023.08.17 |
ํ๋ก๊ทธ๋๋จธ์ค (Lv 2) - ์นดํซ (1) | 2023.08.17 |
ํ๋ก๊ทธ๋๋จธ์ค (Lv 2) - ๊ธฐ๋ฅ๊ฐ๋ฐ (1) | 2023.08.17 |