코테 노트/프로그래머스

Level 2 프린터 Python3

화요밍 2021. 7. 4. 16:54
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/42587?language=python3 

 

코딩테스트 연습 - 프린터

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

programmers.co.kr

 

최종 코드

 

hwayeon351/Programmers-Algorithms

프로그래머스 알고리즘 소스 코드 모음. Contribute to hwayeon351/Programmers-Algorithms development by creating an account on GitHub.

github.com

from collections import deque
def solution(priorities, location):
    answer = 0
    queue = deque([[p, i] for i, p in enumerate(priorities)])
    while True:
        cur = queue.popleft()
        if len(queue) == 0: return answer+1
        p_list = [p[0] for p in queue]
        if cur[0] < max(p_list):
            queue.append(cur)
        else:
            answer += 1
            if location == cur[1]: return answer

풀이 과정

플이 시간 50분

 priorities에 담겨있는 목록 순서대로 우선순위가 가장 높으면 인쇄를 하고, 아니면 다시 뒤로 보내야 하므로 queue를 사용하여 과정을 수행해 나가면 된다.

입력으로 주어진 priorities 상에서 location에 있는 항목이 몇 번째로 인쇄되는지를 return하는 문제이고, 우선 순위에 따라 항목의 순서가 바뀔 것이기에 처음에 몇 번째 항목이었는지를 표현하기 위해 queue에 [priority, index]로 각 항목을 담아 초기화 해준다.

그리고 아래 과정을 location이 인쇄될 때까지 반복적으로 수행한다.

1. priorities의 가장 앞에 있는 항목을 꺼내 cur에 담는다.

2. 나머지 priorities 중에서 cur의 priority보다 큰 항목이 있으면 queue에 cur을 push하고 1.로 돌아간다.

3. 나머지 priorities 중에서 cur의 priority가 가장 크다면 인쇄가 이뤄지므로 answer += 1을 하고 현재 인쇄되는 항목이 location인지 확인하여 location과 같으면 answer가 해당 location이 인쇄되는 순서이기 때문에 return한다. location의 항목이 아니라면 1로 돌아간다.

 

 

728x90
반응형

'코테 노트 > 프로그래머스' 카테고리의 다른 글

Level 2 주식가격 Python3  (0) 2021.07.05
Level 2 다리를 지나는 트럭 Python3  (0) 2021.07.05
Level 2 기능 개발 Python3  (0) 2021.07.04
Level 3 단어 변환 Python3  (0) 2021.07.01
Level 3 네트워크 Python3  (0) 2021.07.01