[파이썬] [그리디] 침몰하는 타이타닉

[14일차] [코딩테스트]

문제 설명

유럽에서 가장 유명했던 유람선 타이타닉이 침몰하고 있습니다. 유람선에는 N명의 승객이 타고 있습니다. 구명보트를 타고 탈출해야 하는데 타이타닉에 있는 구명보트는 2명 이하로만 탈 수 있 으며, 보트 한 개에 탈 수 있는 총 무게도 M kg 이하로 제한되어 있습니다. N명의 승객 몸무게가 주어졌을 때 승객 모두가 탈출하기 위한 구명보트의 최소개수를 출력하는 프로그램을 작성하세요.

입력

첫째 줄에 자연수 N(5<=N<=1000)과 M(70<=M<=250)이 주어집니다. 두 번째 줄에 N개로 구성된 몸무게 수열이 주어집니다. 몸무게는 50이상 150이하입니다. 각 승객의 몸무게는 M을 넘지는 않습니다. 즉 탈출을 못하는 경우는 없습니다.

출력

첫째 줄에 구명보트의 최소 개수를 출력합니다.

예제 입력 1

5 140
90 50 70 100 60

예제 출력 1

3


입출력 예 설명

둘이 더해서 M kg이하면 둘이 타고 M kg 넘으면 한명이 타고 해서 모두 태우면 그때 보트 개수 몇개인지


🚀 정답 ⭕

내 풀이


def solution(n,m,people):
    cnt=0
    people.sort()
    while people:
        if len(people) == 1:                # 한명 남았을 때
            cnt+=1
            break 
        if people[0] + people[-1] > m:      # 두 사람 몸무게 더했는데 제한 m kg 넘을때
            people.pop()                    # 한명만 태워 
            cnt+=1
        else:
            people.pop(0)                   # m kg 이하이면 둘다 태워
            people.pop()
            cnt+=1 

    return cnt

n,m=5,140
people = [90, 50, 70, 100, 60]

print(solution(n,m,people))




🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기


© 2020. All rights reserved.

따라쟁이