문제
내가 인쇄를 요청한 문서가 몇 번째로 인쇄되는지 return해줘야 한다.
주어지는 입력은 priorities(문서의 중요도가 순서대로 담긴 배열)와 location(내가 인쇄를 요청한 문서가 어떤 위치에 있는지 알려주는 정수 변수)
주의할 점은 현재 인쇄할 문서보다 중요도가 더 높은 문서가 뒤에 있는 경우 현재 인쇄할 문서는 맨 뒤로 보낸다.
코드
def solution(priorities, location):
queue = [(i,v) for i,v in enumerate(priorities)]
answer = 0
while True:
tmp = queue.pop(0)
if any(tmp[1] < q[1] for q in queue):
queue.append(tmp)
else:
answer += 1
if tmp[0] == location:
return answer
튜플로 queue에 인덱스와 우선순위를 저장한다.
무한루프 while문 안의 tmp변수에 queue의 처음 값을 pop해서 넣어준다.
if문으로 any를 사용해 큐 안의 값 중 tmp[1]보다 큰 게 있다면 append로 추가해준다.
아닐 경우 answer을 1증가시켜주고 tmp의 0번째 값과 location을 비교한다. 같으면 answer을 return해준다.
'Programming > Python' 카테고리의 다른 글
[프로그래머스] 힙(Heap) - 더 맵게 (Python3, 파이썬) (0) | 2022.01.30 |
---|---|
[프로그래머스] 스택/큐 - 주식가격 (Python3, 파이썬) (0) | 2022.01.29 |
[프로그래머스] 스택/큐 - 다리를 지나는 트럭 (Python3, 파이썬) (0) | 2022.01.29 |
[프로그래머스] 스택/큐 - 기능개발 (Python3, 파이썬) (0) | 2022.01.29 |
[프로그래머스] 코딩테스트 연습 - 해시 (Python3, 파이썬) (0) | 2022.01.23 |