RUBY

[프로그래머스] 프린터 본문

PS/Programmers

[프로그래머스] 프린터

RUBY_루비 2020. 10. 21. 23:59

출처:: 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