[프로그래머스] LV2. 구명보트- 파이썬

곌로그·2023년 10월 18일
0

[python]코딩테스트

목록 보기
23/34
post-thumbnail

문제 링크


문제 요약

그리디 문제 에 해당한다.
사람의 무게가 담긴 리스트 people이 주어지고 구명보트가 최대 태울 수 있는 무게 limit가 주어짐. 또한, 구명보트에는 최대 2명까지만 탑승 가능. 따라서, 사용가능한 최소 구명보트의 개수를 return 해주는 문제

문제 풀이


# 구명보트 : 최대 2명, 무게 제한
# 포인트 : 제일 무거운 사람 + 제일 가벼운 사람 
from collections import deque

def solution(people, limit):
    count = 0
    people.sort()
    queue = deque(people)
    
    while queue:
        max_person = queue.pop()
        if len(queue) == 0 :
            count +=1 
            break
        else:
            min_person = queue[0]
            
            if max_person + min_person <= limit:
                # limit 보다 작으면 
                count +=1
                queue.popleft()
            else:
                count +=1
        
    return count
  

📌 고려해야할 점

  • 그리디 문제 유형으로 해당 문제에서 포인트는 가장 무거운 사람 + 가장 가벼운 사람 <= 제한 인 경우를 우선적으로 생각해주면 된다.
  • 효율성도 체크하는 문제라서 리스트로 해결하기보단 deque를 활용하였다.

0개의 댓글