프로그래머스 level 2 구명보트

Kim Yongbin·2023년 9월 3일
0

코딩테스트

목록 보기
26/162

Problem

Solution

from collections import deque

def solution(people, limit):
    answer = 0
    dq = deque(sorted(people))
    
    while len(dq) > 0:
        weight = limit - dq.pop()
        
        if len(dq) > 0 and weight >= dq[0]:
            dq.popleft()
        answer += 1
    
    return answer
  • 보트 하나에 2명밖에 타지 못하므로 남아있는 사람 중 가장 무거운 사람과 가장 가벼운 사람의 합이 구명 보트의 무게 제한보다 작다면 2명이 탈 수 있고, 아니라면 가장 무거운 사람만 태워서 보낸다.

⇒ deque를 이용하여 양쪽에 뽑아다 쓰면된다.

문제를 제대로 안 읽고 최대로 많이 태우려고 하다가 삽질을 기가 막히게 해냈다.

Reference

https://school.programmers.co.kr/learn/courses/30/lessons/42885#
https://velog.io/@sem/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-LEVEL2-%EA%B5%AC%EB%AA%85%EB%B3%B4%ED%8A%B8-Python

profile
반박 시 여러분의 말이 맞습니다.

0개의 댓글