Solution:
from collections import deque
def solution(people, limit):
# 초기화
people.sort()
q=deque(people)
cnt=0
# 사람들이 2명 이상 있어야함.
while len(q)>=2:
heavy = q.pop()
# 가벼운 사람 + 무거운 사람
if q[0]+heavy<=limit:
# if q:
q.popleft()
cnt+=1
else:
cnt+=1
if q:
return cnt+1
return cnt
Skills:
- deuqe는 pop(), popleft() 둘다 있음, 시간복잡도 둘다 O(1) 상수시간임.
- 큐에서, q[0],q[-1]의 시간복잡도는 O(1) 상수시간임. (선형시간아님), but 0, -1 이 아니라면 O(n) 선형시간임.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 모음 사전 | 파이썬 (0) | 2025.05.26 |
|---|---|
| [프로그래머스] 타겟 넘버 | 파이썬 (0) | 2025.05.22 |
| [프로그래머스] LV2 큰 수 만들기 | 파이썬 (0) | 2025.05.21 |
| [프로그래머스] LV2 조이스틱 | 파이썬 (0) | 2025.05.12 |
| [프로그래머스] LV2 [PCCP 기출문제] 2번 석유 시추 | 파이썬 (0) | 2025.05.12 |