728x90
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
전형적인 그리디 문제.
구명보트 리스트를 정렬한 후,
left, right를 통해 리스트를 순회하면서 필요한 구명보트 개수의 최솟값을 구해주면 된다.
내 풀이 코드
def solution(people, limit):
people.sort() # 오름차순 정렬
left = 0
right = len(people) - 1
answer = 0 # 구명보트 최솟값
while left <= right:
if left == right: # 한명이서 탄다.
answer += 1
break
# 왼쪽 사람의 무게와 오른쪽 사람의 무게의 합이 limit보다 큰 경우
if people[left] + people[right] > limit:
right -= 1 # 오른쪽 사람 혼자 탄다.
answer += 1
# 두 명 무게의 합이 limit보다 작거나 같은 경우
else:
right -= 1 # 오른쪽 사람도 타고
left += 1 # 왼쪽 사람도 탄다
answer += 1
return answer
728x90