Algorithm/1일 1코테
[💕 프로그래머스] 구명보트
대인보우
2020. 12. 16. 16:20
반응형
문제
programmers.co.kr/learn/courses/30/lessons/42885
코딩테스트 연습 - 구명보트
무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5
programmers.co.kr
답
def solution(people, limit):
count = 0
people.sort()
while people:
p = people.pop(-1)
for i, v in enumerate(people):
if p+v > limit:
break
else:
people.pop(i)
break
count += 1
return count
테스트케이스는 통과하지만 효율성 1번에서 자꾸 시간초과로 실패함
아무래도 pop을 사용해서 그런 것 같아 비슷한 알고리즘이되 다른 방식으로 수정
def solution(people, limit):
count = 0
people.sort()
r = len(people)-1
l = 0
while l <= r :
if people[r] + people[l] > limit:
r-=1
else:
r -= 1
l += 1
count += 1
return count
반응형