본문 바로가기
공부-코딩테스트/코테풀이 - 자바, 파이썬

프린터 (코딩테스트, 프로그래머스)

by 령과 2022. 1. 20.

문제

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

 

코딩테스트 연습 - 프린터

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

programmers.co.kr

 

나의 코드 (런타임 에러 3개)

from collections import deque
def solution(priorities, location):
    answer=0
    priorities = deque(priorities)
    point_list = deque(range(len(priorities)))

    while priorities:
        tmp = priorities.popleft()
        
        if tmp < max(priorities):
            point_list.append(point_list.popleft())
            priorities.append(tmp)
        
        else:
            answer+=1
            point = point_list.popleft()
            
            if point ==location:
                return answer

문제 그대로 구현하였더니 테스트 3개가 런타임 에러로 통과되지 못하였다.

계속 고민해도 해답을 얻지 못하였는데 나랑 거의 똑같은 다른사람 코드를 보고 문제를 해결하였다.

 

from collections import deque
def solution(priorities, location):
    answer=0
    priorities = deque(priorities)
    point_list = deque(range(len(priorities)))

    while priorities:
        tmp = priorities.popleft()
        
        if priorities:
            if tmp < max(priorities):
                point_list.append(point_list.popleft())
                priorities.append(tmp)
        
            else:
                answer+=1
                point = point_list.popleft()
            
                if point ==location:
                    return answer
    return answer+1

기존 코드는 우선순위가 내림차순으로 되어있을 경우 처리를 못했는게 아닐까 추측된다.

댓글