티스토리 뷰
import collections
def solution(people, limit):
answer = 0
_people = collections.deque(sorted(people))
while _people and _people[-1] > limit - 40: #무게 넘는 사람 탈출
answer += 1
_people.pop()
while _people:
light = _people.popleft()
if not _people:
answer += 1
while _people:
heavy = _people.pop()
if light + heavy <= limit: #가볍, 무겁 탈출
answer += 1
break
elif not _people:
answer += 2
break
else:
answer += 1 #무거운 사람만 탈출
return answer
무게 순으로 정렬 후 가장 가벼운, 무거운 사람들 매칭해서 탈출시켰습니다~
양 무게 끝단을 비교하느라 양방향에서 데이터를 처리할 수 있는 자료구조가 필요했는데
collections.deque()가 있길래 사용했습니다. 양 끝단 데이터를 삽입, 삭제하는데 효율성이 좋다고 하네요
그럼 collections.deque()를 알아봅시다.
Collections.deque
deque란 double ended queue로 양방향에서 데이터 조작이 가능한 queue 입니다.
먼저 스택처럼 사용하기 위한 메소드로는
deque.append(x)
deque.pop()
deque.extend(iterable)
처럼 우측 기준으로 삽입 삭제되는 것들이 있고 만약 큐처럼 왼쪽 기준으로 활용하려면 left를 추가로 써주면 됩니다
deque.appendleft(x)
deque.popleft()
deque.extendleft(iterable)
'알고리즘' 카테고리의 다른 글
[알고리즘] Bubble Sort(버블 정렬) (0) | 2020.04.08 |
---|---|
[알고리즘] Selection Sort(선택정렬) (0) | 2020.03.19 |
[프로그래머스] Greedy 문제 체육복 (0) | 2020.02.23 |
[프로그래머스] hash 문제 전화번호 목록 (0) | 2020.02.22 |
[프로그래머스] Stack/Queue 문제 Top (0) | 2020.02.04 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 가상환경
- CodeDeploy
- 리액트
- AWS
- 선택정렬
- ci/cd
- EC2
- 삽입정렬
- Union-FInd
- 서버
- 배포
- 계수정렬
- 퀵 소트
- 자동화
- react
- 병합정렬
- 스프링 부트
- 정렬
- 다익스트라
- stack
- oauth
- greedy
- RDS
- spring boot
- 버블정렬
- 백준
- 합병정렬
- 알고스팟
- 알고리즘
- 라이프 사이클
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함