프로그래머스_구명보트_python

2021. 8. 23. 21:19코딩테스트

반응형

 

https://programmers.co.kr/learn/courses/30/lessons/42885

 

코딩테스트 연습 - 구명보트

무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5

programmers.co.kr

from collections import deque
def solution(people, limit):
    answer = 0
    people = deque(sorted(people))
    while people:
        m = people.pop()
        answer += 1
        if people and people[0]<= limit-m:
            people.popleft()
    return answer

[내코드]

그냥 list사용하면 시간초과로 실패함.. deque사용.

people sorting하고 최대값과 최소값을 더한 값이 limit 이하면 최소값 빼냄.

 

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

[다른사람코드]

people sorting하고 양쪽 인덱스를 변수에 저장

양쪽 값을 더하고 limit이하면 시작인덱스+1, answer(같이태움)+1

끝인덱스는 매번 -1씩

끝인덱스와 시작인덱스가 같아지면 종료.

사람수-answer 리턴.

 

반응형