from collections import deque
def solution(people, limit):
answer = 0
people.sort()
people = deque(people)
while len(people) > 1:
if people[0] + people[-1] <= limit:
people.pop()
people.popleft()
answer += 1
else:
people.pop()
answer += 1
if len(people) == 1:
answer += 1
return answer
deque를 사용하지 않으면 효율성 1번에서 탈락되는 코드
풀이 방식은
오름차순 sort 후
몸무게가 가장 작은 사람(people의 첫번째 원소) + 몸무게가 가장 많은 사람(people의 마지막 원소) <= limit 인 점을 활용해야 한다.
최소 2개의 원소가 존재해야 people[0]과 people[-1]을 비교할 수 있으므로 while문의 조건을 len(people) > 1 로 바꿔주고, 만약 people의 길이가 1이 남았을 땐, 한명만 보트에 싣고 옮겨야 하기 때문에 +1을 해준다.
'Programmers' 카테고리의 다른 글
[프로그래머스 / 파이썬 풀이] 멀리 뛰기 (0) | 2023.02.14 |
---|---|
[프로그래머스 / 파이썬 풀이] 짝지어 제거하기 (0) | 2023.02.13 |
[프로그래머스 / 파이썬 풀이] 다음 큰 숫자 (0) | 2023.02.10 |
[프로그래머스 / 파이썬 풀이] 피보나치 수 (0) | 2023.02.10 |
[프로그래머스 / 파이썬 풀이] 숫자의 표현 (0) | 2023.02.10 |