티스토리 뷰

728x90
반응형

이번 포스팅은 프린터 대기열을 처리하기 문제입니다

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

 

코딩테스트 연습 - 프린터

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

programmers.co.kr

 

문제를 살펴보면 간단한 Queue 대기행렬 문제의 응용버전 입니다.

 

1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다.

2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다.

3. 그렇지 않으면 J를 인쇄합니다.

 

우선순위는 값이 클수록 높은 Job이라고 가정합니다.

 

문제풀이를 할 때 Location에 해당하는 원소의 위치를 확인하는 것이 가장 핵심입니다.

 

저는 Element를 Int가 아닌 List로 바꾼 뒤 Max를 판별할때 별도의 사용자 지정함수를 사용했습니다.

 

해당방법 이외에서 반복에 따라 Location 을 갱신해 주는 방식으로도 구현이 가능합니다.

 

아래는 Python으로 구현한 해답입니다 :)

#solution에서 지정한 location의 값은 Int가 아니라
#List로 바꿨기 때문에, List내에 Element가 Int이거나 List일경우
#Max값을 찾을 수 있게 사용자지정 함수를 정의합니다.
def finmax(data):
    temp_max = 0
    for i in data:
        if type(i) == list:
            temp = i[0]
        else:
            temp = i
        if temp_max < temp:
            temp_max = temp
    return temp_max


#input 예시. priorities = [2, 1, 3, 2], location = 2, then return is 1
def solution(priorities, location):    
    answer = 0
    #location에 해당하는 Element를 구분하기 위해서
    #해당 Location의 Element를 List로 만들어줍니다.
    priorities[location] = [priorities[location]]        
    while True:        
    	#Queue에서 가장 앞의 Job을 꺼냅니다.        
        temp = priorities.pop(0)        
        #이때 꺼내는 Job이 Location에 해당하는 Job인지 아닌지를 확인합니다.
        #아래 Case는 Job이 Location에 있던 Job인 경우
        if type(temp) == list:
        	해당 Job이 Max값보다 작으면 다시 대기열 Queue에 들어갑니다.
            if finmax(priorities)>temp[0]:            
                priorities = priorities + [temp]                
            아닐경우 Job을 수행하며, 수행 횟수를 증가시킵니다.
            else:
                answer = answer +1         
                break
        #꺼내는 Job이 Location에 해당하는 원소가 아닌 경우
        else:
            if finmax(priorities)>temp:            
                priorities = priorities + [temp]
            else:
                answer = answer +1         
    return answer
728x90
반응형

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

스킬트리 문제  (0) 2021.03.06
멀쩡한 사각형  (0) 2021.03.04
2xn 타일링  (0) 2021.03.02
Sort - H-Index  (0) 2021.03.01
Heap - 매운음식 성애자(Way Cool)  (0) 2021.02.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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 31
글 보관함