티스토리 뷰
프로그래밍 강의 | 프로그래머스
기초부터 차근차근, 직접 코드를 작성해 보세요.
programmers.co.kr
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
- 라이프 사이클
- Union-FInd
- 스프링 부트
- greedy
- 배포
- 병합정렬
- 계수정렬
- 가상환경
- oauth
- 다익스트라
- 서버
- RDS
- react
- 버블정렬
- AWS
- 정렬
- 리액트
- spring boot
- ci/cd
- 알고스팟
- stack
- 퀵 소트
- EC2
- 백준
- 삽입정렬
- 선택정렬
- 자동화
- 합병정렬
- 알고리즘
- CodeDeploy
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함