728x90
반응형
SMALL
✏️ 문제
문제 파악
처음엔 배열에 pop()을 해서 len(people)의 값이 0이 될 때 while 반복문을 끝내는 방향으로 짰는데 pop(0) 메소드를 실행하면 0 인덱스 뒤에 있는 요소들이 인덱스를 다시 배정받아야하는데 이때 많은 시간이 소요되어 효율성 테스트 1번에서 시간초과가 떴다.
그래서 배열의 내용을 건들이지 않는 투 포인터 알고리즘으로 풀었따.
코드
- 시간초과 풀이
def solution(people, limit):
answer = 0
people.sort()
while len(people) > 0:
# 최소 몸무게 이하
if limit - 39 < people[-1]:
answer += 1
people.pop()
continue
# 1명만 남음
if len(people) == 1:
answer += 1
break
# 한 보트에 최대 두명
if limit >= (people[0] + people[-1]):
people.pop(0)
answer += 1
people.pop()
return answer
- 성공한 풀이
def solution(people, limit):
answer = 0
people.sort()
left, right = 0, len(people) - 1
while left <= right:
if people[left] + people[right] <= limit:
left += 1
right -= 1
answer += 1
return answer
728x90
반응형
LIST
'PS > 프로그래머스' 카테고리의 다른 글
[Python] 카펫 (1) | 2024.11.08 |
---|---|
[Python] 영어 끝말잇기 (0) | 2024.11.08 |
[Python] 점프와 순간 이동 (0) | 2024.11.07 |
[Python] 가장 많이 받은 선물 (0) | 2024.11.03 |
[Python] 성격 유형 검사하기 (0) | 2024.11.03 |