본문 바로가기
Algorithm/Programmers

[Programmers / Level2] 구명보트

by 개복취 2024. 1. 21.

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


<정해코드>

def solution(people, limit):
    people.sort()
    i, j, boat = 0, len(people) - 1, 0
    while True:
        if i > j: return boat
        if people[i] + people[j] <= limit: i += 1
        j -= 1
        boat += 1

 

-> 투포인터를 활용한 그리디 알고리즘이다. 정렬된 형태에서 limit 이하의 값을 만나게 된다면 인덱스되는 값들을 하나씩 늘려가는 식으로 진행된다. 양끝을 가지고 어떻게 조합해야하나 고민을 했었는데, 조합이 이뤄지지 않으면 뒤에서 인덱스를 낮추어 보트로 보내버리는 방식이 참신했다. 투포인터 공부하자