새로운 블로그로 이전 작업을 진행하고 있어 포스트가 새로 작성되고 있지 않습니다.

빠른 시일 내에 새로운 블로그로 인사드리겠습니다.

새로운 블로그 : https://unho.vercel.app/

본문 바로가기
알고리즘 문제풀이/Python

[프로그래머스] 구명보트

by 언호 2022. 3. 16.

📖 문제


🧑🏻‍💻 풀이 과정

1) 문제 이해 및 접근

탑승 가능한 인원이 최대 2명이므로, 무게가 가장 작은 사람과 가장 큰 사람이 함께 탐승하게 하는 방법이 최선의 방법입니다.

2) 알고리즘

  • 탐욕법

3) 풀이 코드

사용 언어 - Python

from collections import deque

def solution(people, limit):
    answer = 0
    q = deque(sorted(people, reverse=True))     # 사람의 무게를 내림차순으로 정렬

    while q:                                    # 사람이 남아있으면
        answer += 1                             # 보트 한개 추가
        if len(q) < 2:                          # 한명만 남았으면, 혼자 사용
            q.pop()
        elif q[0] + q[-1] <= limit:             # 무게가 가장 작은 사람과 가장 큰 사람이 같이 타도 괜찮으면
            q.pop()                             # 둘이 같이 탑승
            q.popleft()
        else:                                   # 둘이 탑승이 불가능하다면, 몸무게 큰 사람이 혼자 탑승
            q.popleft()

    return answer

📝 결과 및 학습한 내용

1) 어려웠던 내용

특별히 없습니다.

2) 새롭게 학습한 내용

특별히 없습니다.


🔗 문제 링크

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

 

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

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

programmers.co.kr

 

 

※ 오류 및 오타, 다른 의견이 있는 경우 댓글을 남겨주시면 감사하겠습니다

'알고리즘 문제풀이 > Python' 카테고리의 다른 글

[백준] 11052 카드 구매하기  (0) 2022.03.19
[프로그래머스] 삼각 달팽이  (0) 2022.03.16
[프로그래머스] 캐시  (0) 2022.03.15
[프로그래머스] 양궁대회  (0) 2022.03.14
[백준] 2644 촌수계산  (0) 2022.03.13

댓글