티스토리 뷰

Problem Solving

프로그래머스 프린터

onaeonae1 2022. 1. 18. 13:37

문제 링크

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

 

코딩테스트 연습 - 프린터

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

programmers.co.kr

 

문제 설명

다음과 같은 규칙에 따라 프린터를 인쇄

그대로 구현해주면 된다

문제에서 원하는 번호의 인쇄 명령이 언제 출력되는지 확인하는 것

가장 앞에 있는 문서를 뽑아서, 인쇄하거나 맨 뒤에 배치 -> deque 쓰기 아주 좋다

 

문제 풀이

규칙에서 알려준 대로 그대로 구현해주면 된다

deque 자료구조를 사용하면 앞에서 뽑고 뒤에 추가하는 등을 자유롭게 수행할 수 있다.

한 가지 주의할 점은, index 값을 같이 가지고 가야 한다는 것이다 -> location에 맞는 인덱스인지 봐야 하므로

배열의 크기가 최대 100이기 때문에 N^2 으로 순회해도 무방하다!

 

코드

from collections import deque

def solution(priorities, location):
    priority_deque = deque(
        [priority, index] for index, priority in enumerate(priorities)
    )
    answer = 0
    printed_count = 0
    while priority_deque:
        now = priority_deque.popleft()
        is_printable = True
        for item in priority_deque:
            p_value, p_index = item
            if p_value > now[0]:
                is_printable = False
                priority_deque.extend([now])
                break
        if is_printable:
            printed_count += 1
            if now[1] == location:
                answer = printed_count
                break

    return answer

 

기타

어제 푼 문제에 비해서는 비교적 pythonic 하게 짰던 것 같다! 좀 더 복잡한 문제에 도전해보자

'Problem Solving' 카테고리의 다른 글

프로그래머스 디스크 컨트롤러  (1) 2022.01.17
프로그래머스 더 맵게  (0) 2022.01.16
프로그래머스 완주하지 못한 선수  (0) 2022.01.16
프로그래머스 기능개발  (0) 2022.01.10
프로그래머스 위장  (0) 2022.01.10
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함