def solution(people, limit):
people.sort() #정렬
length=len(people) #사람 수
i=0 #가벼운 사람의 인덱스
heavy=length-1 #무거운 사람의 인덱스
count=0 #짝 지은 수
while(i<heavy): #가벼운 사람과 무거운 사람이 겹치기 전까지 반복
if people[i]+people[heavy]<=limit: #가벼운 사람과 무거운 사람의 무게를 합한 것이 구명보트 무게 제한보다 작거나 같다면
count+=1 #짝을 만듦
i+=1 #그 다음 가벼운 사람
heavy-=1 #그 다음 무거운 사람
else: #짝을 못 만들었으므로 무거운 사람은 혼자 태우고
heavy-=1 #다음 무거운 사람으로 이동
return length-count #전체 인원 수에서 짝의 수를 빼면 구명 보트 사용 횟수가 나옴
print(solution([70, 50, 80, 50],100))
print(solution([70,80, 50],100))
print(solution([40,50,50,60],100))
print(solution([40,40,40,40,40,40,40,10,10,10],100))
출처 https://programmers.co.kr/learn/courses/30/lessons/42885/solution_groups?language=python3
'알고리즘 문제' 카테고리의 다른 글
프로그래머스 저울 [시간초과..] (0) | 2018.10.27 |
---|---|
프로그래머스 단속카메라 (0) | 2018.10.27 |
프로그래머스 조이스틱 (0) | 2018.10.11 |
프로그래머스 큰 수 만들기 (3) | 2018.10.06 |
프로그래머스 예상 대진표 (0) | 2018.10.06 |