Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 오픽공부법
- 탑다운
- English
- 오픽노잼
- 안드로이드
- 영어말하기
- ㅂ
- 안드로이드주석
- XML
- 바텀업
- stack 스택
- 오픽점수잘받는방법
- 다이나믹프로그래밍
- 디피
- 이진탐색 #나무 자르기
- dynamicProgramming
- 영어회화
- dp
- opic
- 주석
- 오픽
- 오픽가격
- 메모이제이션
- 피보나치수열
- XML주석
- 이진탐색
- topdown
- 오픽노잼공부방법
- fibo
Archives
RUBY
[프로그래머스] 프린터 본문
출처:: programmers.co.kr/learn/courses/30/lessons/42587
분류:: 스택,큐
1. 문제 이해 및 해결과정
1. 파이썬에서 pop(0)이 O(n)임을 고려해 deque를 쓰자고 생각함
2. 풀이방법
1. 큐
from collections import deque
def solution(priorities, location):
cnt=0 #몇번째로 인쇄되는가
q=deque([(value,i) for i,value in enumerate(priorities)])
while q:
cur=q.popleft()
if q and cur[0]<max(q)[0]:#큐가 비어있으면 안되고, 현재것보다 중요도 높은것이 있다면
q.append(cur) #대기열로 다시 넣음
else:
cnt+=1 #인쇄
if location==cur[1]:#현재프린터의 인덱스와 뽑으려는 문서가 같다면
break
return cnt
2. any를 이용
from collections import deque
def solution(priorities, location):
cnt=0 #몇번째로 인쇄되는가
q=deque([(value,i) for i,value in enumerate(priorities)])
while q:
cur=q.popleft()
if any(cur[0]<v[0] for v in q):
q.append(cur) #대기열로 다시 넣음
else:
cnt+=1 #인쇄
if location==cur[1]:#현재프린터의 인덱스와 뽑으려는 문서가 같다면
break
return cnt
3. 오답원인
4. 알게된 점
any
if any(cur[0]<v[0] for v in q):
'PS > Programmers' 카테고리의 다른 글
[프로그래머스] H-Index (1) | 2020.10.22 |
---|---|
[프로그래머스] 구명보트 (0) | 2020.10.22 |
[프로그래머스] 더맵게 (0) | 2020.10.21 |
[프로그래머스] 소수 찾기 (0) | 2020.10.21 |
[프로그래머스] 가장 큰 수 (0) | 2020.10.20 |
Comments