https://school.programmers.co.kr/learn/courses/30/lessons/42885
나의 풀이 - 테케 일부 실패
def solution(people, limit):
answer = 0
people.sort(reverse=True)
if len(people) % 2 == 1:
answer += 1
r = people.pop()
for pp in people:
if pp + r <= limit:
answer += 1
r = people.pop()
else:
answer += 1
return answer
- popleft를 사용하지 않고 풀어보기 위해 이와같이 구현하였다.
- [30, 40, 50, 60], 80 -> 3 와 같은 테스트 케이스에서는 실패하는 코드이다.
나의 풀이 - 성공
from collections import deque
def solution(people, limit):
answer = 0
people.sort(reverse=True)
pp = deque(people)
while pp:
if len(pp) >= 2 and (pp[0] + pp[-1] <= limit):
pp.popleft()
pp.pop()
answer += 1
else:
pp.popleft()
answer += 1
return answer
'알고리즘 > 알고리즘 문제' 카테고리의 다른 글
[python] 프로그래머스 > 두 큐 합 같게 만들기 (0) | 2023.06.01 |
---|---|
[python] 프로그래머스 > 귤고르기 (0) | 2023.05.30 |
[python] 프로그래머스 > 연속된 부분 수열의 합 (0) | 2023.05.29 |
[python] 프로그래머스 > 마법의 엘리베이터 (0) | 2023.05.25 |
[python] 프로그래머스 > H-index (0) | 2023.05.23 |