본문 바로가기
스터디/알고리즘

구명보트

by 세졍 2024. 5. 6.

문제이해
사람들의 몸무게가 배열로나오고 , 보트의 최대제한무게가 주어질때
보트에 최대2명까지 탈수 있을때 
모두 보트타고 구출하기 위한 최소 보트개수

1. 2명씩 탈수있다 => 2명씩 짝 짓기

2. 오름차순해서 가장적은사람과 가장무거운사람을 짝지으면 효율적!!

3. 인덱스 첫번째와 마지막을 left,right로 정해놓고 인덱스 이동하면서 보트개수(answer) 세어주기

 

def solution(people, limit):
    answer = 0
    people.sort() # 50,50,70,80
    left ,right = 0,len(people)-1
    while left<right:
        if people[left] + people[right] <= limit:
            answer += 1
            left += 1
            right -= 1
            if right == left:
                answer += 1
                break
        elif people[left] + people[right] > limit:
            answer += 1
            right -= 1
            if right == left:
                answer += 1
                break

    return answer


people = [70, 80, 50]
limit = 100
print(solution(people,limit))

'스터디 > 알고리즘' 카테고리의 다른 글

실패율  (0) 2024.05.22
섬연결하기  (0) 2024.05.06
큰 수 만들기  (0) 2024.05.06
입국심사  (0) 2024.05.04
프로세스  (0) 2024.05.02