본문 바로가기
2021/코딩테스트

[프로그래머스] Lv.2 - 프린터 (Python)

by 에이도 2020. 12. 29.

 

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

 

코딩테스트 연습 - 프린터

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

programmers.co.kr

 

 

 

<Steps>

  • 입력받은 리스트 priorities에서 첫 번째 element가 가장 큰 값인지 확인합니다.

  • 가장 큰 값이라면 출력(pop)하고 출력 횟수(answer) 증가시킵니다.
  •  처음 지정한 location이 0이라면, 출력 횟수를 return 합니다.
    처음 지정한 location이 음수라면, 남은 priorities의 길이만큼 더합니다.
    location 1 빼서 위치 이동

    priorities에서 첫 번째 element가 가장 큰 값이 아니라면,

  • 맨 앞 element를 빼서 맨 뒤로 이동시킵니다.

  • 하나의 element를 뺐으므로 location도 -1 합니다.

    만약, location이 음수가 된다면, priorities의 길이만큼 더해줍니다.

''' 반복 '''

 

 

최종 return answer 출력합니다.

 

 

[최종 코드]

def solution(priorities, location):
    answer = 0
    while  True:
        if priorities[0] == max(priorities):
            priorities.pop(0)
            answer +=1
            if location == 0:
                return answer
            elif location < 0:
                location += len(priorities)

            location -=1 
        
        else:
            priorities.append(priorities.pop(0))
            location -= 1
            if location < 0:
                location += len(priorities)
    return answer

print(solution([2, 1, 3, 2], 0))
print(solution([2, 1, 3, 2,6,5,2,2,7,9], 7))

[out]
3
8

댓글