문제링크 :https://school.programmers.co.kr/learn/courses/30/lessons/42885
문제 설명
- 처음 문제를 접했을 때 최대 무게가 고정되어 있기에 Greedy임을 파악하여, 정렬 후 앞뒤 값을 비교하여 제거하는 방식을 사용하였다.
내 코드
from collections import deque
def solution(people, limit):
answer = 0
people = deque(sorted(people))
while len(people)>1:
answer += 1
if people[0] + people[-1] <= limit:
people.pop()
people.popleft()
else:
people.pop()
if people:answer+=1
return answer
다른 사람들의 코드
def solution(people, limit) :
answer = 0
people.sort()
a = 0
b = len(people) - 1
while a < b :
if people[b] + people[a] <= limit :
a += 1
answer += 1
b -= 1
return len(people) - answer
- index를 사용해 people에 접근하는 방식이 인상적이었다.
- pop 연산도 시간복잡도가 상수단위이기 때문에 크게 다르지 않겠지만 구조적으로 더 간결해 보이며 조건문이 적었다.
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 피로도 - python[DFS] (3) | 2023.07.27 |
---|---|
[프로그래머스] 숫자 문자열과 영단어 - python[문자열] (2) | 2023.07.10 |
[프로그래머스] 신고 결과 받기 - python[Hashing] (2) | 2023.07.10 |
프로그래머스 정수 삼각형 (0) | 2023.04.10 |
프로그래머스 점프와 순간 이동 (0) | 2023.03.31 |