https://school.programmers.co.kr/learn/courses/30/lessons/42885
<정해코드>
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 이하의 값을 만나게 된다면 인덱스되는 값들을 하나씩 늘려가는 식으로 진행된다. 양끝을 가지고 어떻게 조합해야하나 고민을 했었는데, 조합이 이뤄지지 않으면 뒤에서 인덱스를 낮추어 보트로 보내버리는 방식이 참신했다. 투포인터 공부하자
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers / Level2] N개의 최소공배수 (0) | 2024.01.23 |
---|---|
[Programmers / Level2] 예상 대진표 (1) | 2024.01.22 |
[Programmers / Level2] 점프와 순간이동 (5) | 2024.01.20 |
[Programmers / Level2] 짝지어 제거하기 (0) | 2024.01.19 |
[Programmers / Level2] 피보나치 수 (0) | 2024.01.18 |