프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
from collections import deque
def solution(people, limit):
answer = 0
people = deque(sorted(people))
while people:
if len(people) == 1:
answer += 1
break
if people[0] + people[-1] <= limit:
people.popleft()
people.pop()
answer += 1
return answer
구명보트의 제한인원이 2명뿐이기에 아주 쉽게 풀 수 있는 문제였다.
사람들을 무게 오름차순으로 정렬한 뒤 앞뒤에서 뽑아내기 위해 deque를 사용했다.
현재 people 배열에 있는 사람 중 가장 무거운 사람과 가장 가벼운 사람이 배열의 맨 앞과 맨 뒤에 있는데 이 둘을 짝지었을 때 무게 합이 limit을 넘지 않는다면 같이 태우고, limit을 넘는다면 현재 가장 무거운 사람은 people 배열에 있는 그 누구와도 같이 보트에 탈 수 없으니 그 사람만 태우면 된다.
'문제풀이 > Greedy' 카테고리의 다른 글
[Python/파이썬] 백준 1758번 알바생 강호 (0) | 2023.02.07 |
---|---|
[Python/파이썬] 백준 2217번 로프 (0) | 2023.02.07 |
[Python/파이썬] 백준 1343번 폴리오미노 (0) | 2023.02.07 |
[Python/파이썬] 백준 14916번 거스름돈 (0) | 2023.02.07 |
[Python/파이썬] Summer/Winter Coding(~2018) 숫자 게임 (0) | 2022.10.28 |