[파이썬/python] 프로그래머스 : 구명보트 (Lv.2) (그리디알고리즘,탐욕법)

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

풀이

def solution(people, limit):
    answer = 0
    people.sort()
    
    r_idx = len(people) - 1
    l_idx = 0
    
    while True:
        if r_idx - l_idx == -1:
            break
        elif r_idx == l_idx:
            answer += 1
            break
        elif people[r_idx] + people[l_idx] > limit:
            r_idx -= 1
            answer += 1
        else:
            r_idx -= 1
            l_idx += 1
            answer += 1
        
    return answer

 

 

다른사람 풀이

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

짝지었을 경우만 answer += 1 해주고 총 인원에서 짝지은 수만 빼면 답이 나오는 거였당

그리고 while문을 a가 b가 작은 상태인 동안만 돌게 해주면 나처럼 쓸데없이 둘이 값이 같을 경우까지 조건을 안 붙여줘도 된다..

comment