프로그래머스 고득점kit 구명보트 | Python
🔎 문제 설명
💚 Level 2
- 난이도 ★☆☆☆ - 그리디 - 투포인터
문제 조건을 잘 보자!
문제를 잘 안 읽어서 시간이 생각보다 오래 걸렸다.
문제 조건은 다음과 같다.
- ⭐️ 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없다.
- 구명보트의 무게 제한을 초과하여 탈 수 없다.
- 구명보틑를 최대한 적게 사용하여 모든 사람을 구출하자
최대 두 사람만 탑승할 수 있다는 조건을 생각하면 제일 가벼운 사람과 제일 무거운 사람을 엮어줘야 한다.
가벼운 사람과 무거운 사람을 투 포인터
로 접근해 계산해 주었고, 더 자세한 코드는 밑에 남겨두었다.
💻 내 코드
def solution(people, limit):
answer = 0
people = sorted(people)
start, end = 0, len(people) - 1
# 제일 가벼운 - 무거운 사람 묶는 게 Best
while start < end:
if people[start] + people[end] <= limit:
start += 1
answer += 1
end -= 1
return len(people) - answer
💙 You need to log in to GitHub to write comments. 💙
If you can't see comments, please refresh page(F5).