Pythonアルゴリズム-93(プログラマー)救命ボート



コード#コード#

from collections import deque
def solution(people, limit):
    answer = 0
    people.sort(reverse=True)
    people=deque(people)
    while people:
        tmp=0
        tmp+=people.popleft()
        # people에 0명 들어있으면 break
        if not people:
            answer+=1
            break
        # 큰 것끼리 우선 더해봄
        if tmp+people[0]<=limit:
            people.popleft()
            answer+=1
        # 안 될 경우 큰 것 + 작은 것
        elif tmp+people[-1]<=limit:
            people.pop()
            answer+=1
        # 한 명밖에 못 탈 경우
        else:
            answer+=1
        
    return answer

他人の解答

def solution(people, limit) :
    answer = 0
    people.sort()

    a = 0
    b = len(people) - 1
    while a < b :
        if people[b] + people[a] <= limit :
            a += 1
            answer += 1
        b -= 1
    # 보트에 한 명씩만 타는 경우의 보트 수에서 두 명씩 타는 경우의 보트 수를 빼줌
    return len(people) - answer