개발공부/algorithm

[프로그래머스][python] 프린터 - Stack/queue

so.py 2021. 5. 8. 23:43

문제

  • 프로그래머스: 프린터
  • Level 2
  • Stack/Queue
  • 문제링크
 

코딩테스트 연습 - 프린터

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

programmers.co.kr

나의 접근

순환 stack 을 생각해서 풀었다.
1. 첫번째 인덱스는 고정 시키고 나머지의 리스트에서 더 큰 숫자가 있으면 해당 인덱스를 리스트의 가장 뒤로 보내준다. 
2. 순환을 계속하며 첫 번째 인덱스가 가장 큰 숫자일 시, 스택에서 pop 시켜준다. Count를 증가시켜준다.
3. 모든 순환이 발생할 시, 내가 가지고 있는 문서의 인덱스 번호도 업데이트 해준다.
4. Stack이 빌 때까지 반복하며, 내가 가지고 있는 문서의 인덱스 번호가 0일때 pop이 되었다면 탐색 완료.
def solution(priorities, location):
    cnt = 0
    start = 0
    current_location = location
    while len(priorities) > 0:
        if len(priorities) == 1:
            return cnt + 1
        
        if priorities[start] < max(priorities[start + 1: len(priorities) + 1]):
            priorities.append(priorities[start])
            priorities.pop(start)
            if current_location == 0:
                current_location = len(priorities) - 1
            else:
                current_location -= 1
        else:
            priorities.pop(start)
            cnt += 1
            if current_location == 0:
                break
            else:
                current_location -= 1
            
    return cnt