https://school.programmers.co.kr/learn/courses/30/lessons/42885
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
바로 보자마자 deque를 사용해주고자 하는 생각이 들었다. 그 이유는 리스트의 원소가 빠져나갈때마다 pop을 해주면서 queue의 길이를 계속해서 줄여주고 싶었기 때문이다.
- deque()를 활용해서 큐 자료구조를 사용한다
- deque의 메소드인 pop()과 popleft()를 활용하여 가장 큰값과 가장 작은 값을 기준으로 sum이 limit 값보다 작은지를 먼저 확인하게 된다.
- 작거나 같으면 큐로부터 두 값을 pop해준다.
- limit 값보다 항상 몸무게는 작다라는 전제가 있기 때문에 따로 조건문으로 추가해줄 필요는 없다.
- else문에서는 1명씩 타야할 경우이다.
- answer에 1씩 더해주면 총 경우의 수를 출력할 수 있다.
- len(queue)==1 일 경우를 구해주는 이유는 큐의 길이가 1일 경우에는 한사람밖에 남지 않은 경우이므로 이때에는 answer에 1 더해주고 while문을 탈출한다.
from collections import deque
def solution(people, limit):
answer = 0
people.sort()
queue = deque(people)
while queue:
if len(queue) == 1:
answer += 1
break
if queue[0] + queue[-1] <= limit:
queue.popleft()
queue.pop()
else:
queue.pop()
answer += 1
return answer
print(solution([70, 80, 50, 50], 100))
으음 통과요 ~
'Python' 카테고리의 다른 글
[python] input() 속도 초과 (0) | 2022.03.14 |
---|---|
[Python] 리스트 (0) | 2021.01.25 |
[Python] 조건문 (0) | 2021.01.23 |
[ Python] 입력함수 (0) | 2021.01.22 |
[Python] 출력함수 (0) | 2021.01.21 |