![[프로그래머스] 구명보트 - 파이썬(python) [프로그래머스] 구명보트 - 파이썬(python)](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
나의 풀이
def solution(people, limit):
people.sort()
answer = 0
min_index = 0
max_index = len(people)-1
while max_index - min_index >= 1 :
if people[max_index] + people[min_index] <= limit :
max_index -= 1
min_index += 1
else :
max_index -= 1
answer +=1
if min_index == max_index : answer += 1
return answer
- people을 오름차순으로 정렬하였다.
- 그러면, 항상 0번째 인덱스에는 몸무게가 젤 작은 사람이, 마지막 인덱스에는 몸무게가 젤 큰 사람이 위치할 것이다.
- 이때, min_index + max_index가 limit 를 초과한다면, max_index 의 사람은 누구랑도 보트를 함께 탈 수 없음을 의미하므로, 혼자서 보트를 타야한다.
- 따라서 max_index 의 값만 1 빼준다. (min_index 는 그대로)
- 마지막에, min,max_index 의 값이 같은 경우, 혼자 남은 경우이므로 answer 을 1 추가해준다.
+ deque 를 이용하여, popleft, pop 으로 동시에 min, max 사람을 제거하는 식으로 푼 사람들도 많았다!
그러나 count 를 하는 변수로 푸는 것이 더 간단하고 시간이 적게 걸린다!
+ pop() 의 경우 항상 마지막 원소를 제거하므로 O(1) 이다.
반면, del arr[i] 의 경우 O(n) 으로 시간이 많이 걸린다!!
'알고리즘 > 그리디' 카테고리의 다른 글
[프로그래머스] 단속카메라 - 파이썬(python) (0) | 2022.09.17 |
---|---|
[프로그래머스] 섬 연결하기 - 파이썬(python) (0) | 2022.09.17 |
[프로그래머스] 큰 수 만들기 - 파이썬(pytyon) (0) | 2022.09.16 |
[프로그래머스] 조이스틱 (0) | 2022.09.16 |
[프로그래머스] 체육복 (0) | 2022.09.14 |
댓글