기억은 짧고 기록은 길다
[프로그래머스/Programmers] 프린터 - Python 본문
Link
코딩테스트 연습 - 프린터
일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린
programmers.co.kr
Solution
해당 문제는 Solution의 key point인 deque, Other Solution의 key point인 any를 사용하지 않아도 쉽게 풀 수 있는 문제였다.
하지만 이번 문제를 통해 any()의 사용법을 습득해갔으면 한다.
참고로 필자의 풀이인 Solution에 대한 설명을 덧붙이자면 while len(q) > 1인 이유는 q가 비어있게 되면 max(q, key=lambda x: x[1])[1]이 작동하지 않기 때문에 그 전까지만 while문을 돌린후 location이 마지막 프린터되는 인덱스를 가르키는 경우 answer에 즉 순서에 1만 더하여 출력하도록 하였다.
마지막에 any()와 all()의 사용법에 대해 설명되어 있는 글을 첨부할테니 참고바란다.
from collections import deque
def solution(priorities, location):
answer = 0
q = deque([(i, j) for i, j in enumerate(priorities)])
while len(q) > 1:
now = q.popleft()
if now[1] < max(q, key=lambda x: x[1])[1]:
q.append(now)
else:
answer += 1
if now[0] == location:
return answer
return answer + 1
🔑 key point: deque(), max(q, key=lambda x: x[1])[1]
Other Solution
def solution(priorities, location):
answer = 0
q = [(i, p) for i,p in enumerate(priorities)]
while True:
cur = q.pop(0)
if any(cur[1] < i[1] for i in q):
q.append(cur)
else:
answer += 1
if cur[0] == location:
return answer
🔑 key point: any()
첨부
'CodingTest > programmers' 카테고리의 다른 글
[프로그래머스/Programmers] 소수 찾기 _2- Python (0) | 2021.09.08 |
---|---|
[프로그래머스/Programmers] 가장 큰 수 - Python (0) | 2021.09.07 |
[프로그래머스/Programmers] 124 나라의 숫자 - Python (0) | 2021.09.06 |
[프로그래머스/Programmers] 크레인 인형뽑기 게임 - Python (0) | 2021.09.05 |
[프로그래머스/Programmers] [1차] 다트게임 - Python (0) | 2021.09.05 |
Comments