[프로그래머스] 구명보트 (파이썬)

뚝딱이·2023년 3월 2일
0

출처: 프로그래머스 구명보트


문제


나의 답안

def solution(people, limit):
    answer = 0
    people.sort()
    s=0
    e=len(people)-1
    
    while s<=e:
        if people[s]+people[e]>limit:#합이 더 크면
            e-=1#end를 줄여서 합을 줄여준다
        else:
            s+=1
            e-=1
        answer+=1
        
        if s==e:
            answer+=1
            break
    return answer

접근 방법

  • 그리디 문제이다. 투포인트를 사용하여 s,e를 조절하여 조건에 맞는 값을 찾아준다.
  • 배열을 정렬해주고, 합이 더 크면 e를 줄여 합을 줄여준다.
  • 반대의 경우에는 s를 증가시키고 e를 줄여 다음 경우의 수를 찾아준다.
  • s와 e가 같아지는 경우(배열의 모든 요소를 탐색한 경우) answer를 늘리고 while문을 종료한다.

0개의 댓글

관련 채용 정보