Problem From.
https://leetcode.com/problems/boats-to-save-people/
오늘 문제는 사람들의 몸무게 배열이 주어지고, 최대 2명까지 태울 수 있는 배와 그 배가 견딜수 있는 무게 limit 가 주어졌을때, 사람들을 모두 구할 수 있는 배의 최소 갯수를 구하는 문제였다.
이 문제는 투포인터를 응용하여 풀었는데, 먼저 사람의 몸무게를 내림차순으로 나열하고,
몸무게가 제일 무거운 사람과 제일 가벼운 사람을 짝지어서 그 짝이 맞으면 answer 을 1 올리고 start + 1 과 end -1 을 해준다. 짝이 안맞으면 start 만 1 올려주는식으로 반복하여, 배의 최소 갯수를 구할 수 있었다.
class Solution {
fun numRescueBoats(people: IntArray, limit: Int): Int {
var answer = 0
people.sortDescending()
var start = 0
var end = people.size - 1
while(start <= end) {
if(people[start] + people[end] <= limit) {
answer += 1
start += 1
end -= 1
}else {
answer += 1
start += 1
}
}
return answer
}
}