[알고리즘] 프로그래머스 - 프린터

June·2021년 2월 25일
0

알고리즘

목록 보기
94/260

프로그래머스 - 프린터

내 풀이

from collections import deque

def solution(priorities, location):
    priority_deque = deque(priorities)
    copy_arr = [0] * len(priorities)
    copy_arr[location] = 1
    copy_deque = deque(copy_arr)
    count = 0
    while 1 in copy_deque:
        if priority_deque[0] >= max(priority_deque):
            priority_deque.popleft()
            count += 1
            pop_result = copy_deque.popleft()
            if pop_result == 1:
                return count
        else:
            priority_deque.append(priority_deque.popleft())
            copy_deque.append(copy_deque.popleft())

    return count

직접 시뮬레이션한 방식이다. 다만 deque으로 element가 빠지고 추가되므로 location으로 주어진 것도 위치가 바뀐다. 따라서 똑같이 동작하되, 처음 주어진 location 정보를 가지고 있는 deque을 만들었다.

다른 사람 풀이

def solution(priorities, location):
    queue =  [(i,p) for i,p in enumerate(priorities)]
    answer = 0
    while True:
        cur = queue.pop(0)
        if any(cur[1] < q[1] for q in queue):
            queue.append(cur)
        else:
            answer += 1
            if cur[0] == location:
                return answer

deque 대신 queue를 쓴 부분은 조금 아쉽지만, any를 잘 썼고, queue에 애초에 index와 값을 저장한 좋은 풀이다.

0개의 댓글