본문 바로가기
Python3/프로그래머스

2022.02.28 [프로그래머스] (python 파이썬) 프린터

by ian's coding 2022. 2. 28.
728x90
반응형

 

https://programmers.co.kr/learn/courses/30/lessons/42587

 

코딩테스트 연습 - 프린터

일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린

programmers.co.kr

 


풀이

해당 문제는 문서를 모두 입력받고 왼쪽 끝의 문서보다 중요도가 높은 문서가 뒤에 존재하면 왼쪽 끝의 문서를 오른쪽 끝으로 보내야한다. 그래서 양방향 데이터 입출력이 가능한 deque를 이용했다.

우선 order_prior배열에 (문서의 순서, 문서의 중요도)로 저장했다. 이후 while문에서 배열의 제일 앞의 중요도보다 높은 문서가 있으면 제일 앞의 문서를 뒤로 보냈다. 여기서 check를 사용한 이유는 만약 뒤에 중요도가 더 큰 문서가 존재해서 앞의 문서를 뒤로 보내면 출력한 것이 아니기 때문에 문서의 출력 가능 여부를 판단하기위해 사용했다.

만약 뒤에 중요도가 더 큰 문서가 존재하면 check를 False로 바꾸고 for문이 끝났을 때, check가 True이면 프린트하고 cnt를 증가시켰다. 출력된 문서가 만약 location과 같으면 cnt을 리터했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from collections import deque
 
def solution(priorities, location):
    order_prior=deque()
    for i in range(len(priorities)):
        order_prior.append((i,priorities[i]))
    cnt=0
    while order_prior:
        check=True
        order,prior=order_prior.popleft()
        for i in order_prior:
            if prior<i[1]:
                order_prior.append((order,prior))
                check=False
                break
        if check:
            cnt+=1
        if check and order==location:
            return cnt
        
    
cs

 

 

 

 

728x90
반응형

댓글