프로그래머스. 구명보트 파이썬 풀이

minan·2021년 6월 22일
0

프로그래머스

목록 보기
15/92

프로그래머스 탐욕법(그리디 Greedy) Level 2. 구명보트 파이썬 풀이

문제링크 https://programmers.co.kr/learn/courses/30/lessons/42885#

처음에 while(people)을 사용해 pop하는 방식으로 풀었는데 효율성 1번에서 시간초과가 나서 for문을 사용하는 것으로 바꿨다.

def solution(people, limit):
    answer = 0

    people = sorted(people)  # 오름차순 정렬

    a = 0  # 제일 작은 값의 인덱스 (처음)
    b = len(people) - 1  # 제일 큰 값의 인덱스 (마지막)

    for i in range(len(people)):
        if a == b:  # 1명 남았을 경우
            answer += 1
            break
        elif a > b: # 사람들을 다 태운경우
            break

        # 제일 가벼운 사람과 제일 무거운 사람을 태웠을 때 한계보다 작다면 둘 다 태움
        if people[a] + people[b] <= limit:
            answer += 1
            a += 1
            b -= 1
        # 아니라면 제일 무거운 사람만 혼자 태움
        else:
            b -= 1
            answer += 1

    return answer
profile
https://github.com/minhaaan

0개의 댓글