개발/코딩테스트
[프로그래머스] 프린터 - 파이썬(Python)
grulsuitg
2022. 6. 20. 19:44
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42587
코딩테스트 연습 - 프린터
일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린
programmers.co.kr
My Solution
def solution(priorities, location):
answer = 0
while priorities:
item = priorities.pop(0)
if len(priorities) == 0:
answer += 1
break
else:
if item < max(priorities):
priorities.append(item)
else:
answer += 1
if location == 0:
break
if location == 0:
location = len(priorities) - 1
else:
location -= 1
return answer
Key Idea
- location의 위치를 계속 update 해주면서 관리
- max를 이용한 현재 우선순위 파악
Best Solution
def best(priorities, location):
queue = [(i, p) for i, p in enumerate(priorities)]
answer = 0
while True:
cur = queue.pop(0)
if any(cur[1] < q[1] for q in queue):
queue.append(cur)
else:
answer += 1
if cur[0] == location:
return answer
Key Idea
- 2번 line에 enumerate로 queue를 만들어 target의 현재 위치를 관리할 필요 X
- any를 이용 → 한개라도 True 라면 True 반환