📖 문제
🧑🏻💻 풀이 과정
1) 문제 이해 및 접근
탑승 가능한 인원이 최대 2명이므로, 무게가 가장 작은 사람과 가장 큰 사람이 함께 탐승하게 하는 방법이 최선의 방법입니다.
2) 알고리즘
- 탐욕법
3) 풀이 코드
사용 언어 - Python
from collections import deque
def solution(people, limit):
answer = 0
q = deque(sorted(people, reverse=True)) # 사람의 무게를 내림차순으로 정렬
while q: # 사람이 남아있으면
answer += 1 # 보트 한개 추가
if len(q) < 2: # 한명만 남았으면, 혼자 사용
q.pop()
elif q[0] + q[-1] <= limit: # 무게가 가장 작은 사람과 가장 큰 사람이 같이 타도 괜찮으면
q.pop() # 둘이 같이 탑승
q.popleft()
else: # 둘이 탑승이 불가능하다면, 몸무게 큰 사람이 혼자 탑승
q.popleft()
return answer
📝 결과 및 학습한 내용
1) 어려웠던 내용
특별히 없습니다.
2) 새롭게 학습한 내용
특별히 없습니다.
🔗 문제 링크
- https://programmers.co.kr/learn/courses/30/lessons/42885
코딩테스트 연습 - 구명보트
무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5
programmers.co.kr
※ 오류 및 오타, 다른 의견이 있는 경우 댓글을 남겨주시면 감사하겠습니다
'알고리즘 문제풀이 > Python' 카테고리의 다른 글
[백준] 11052 카드 구매하기 (0) | 2022.03.19 |
---|---|
[프로그래머스] 삼각 달팽이 (0) | 2022.03.16 |
[프로그래머스] 캐시 (0) | 2022.03.15 |
[프로그래머스] 양궁대회 (0) | 2022.03.14 |
[백준] 2644 촌수계산 (0) | 2022.03.13 |
댓글