B/Coding Test
[프로그래머스] 큐/스택 - 프린터
f_s_t_k
2021. 1. 21. 00:42
전형적인 큐를 활용하는 문제.
콜렉션에서 deque를 굳이 활용해서 써봤다.. ㅎㅎ
def solution(priorities, location):
from collections import deque
q = deque(priorities)
name = deque([i for i in range(len(priorities))])
sheet = []
while len(q)!=0:
if q[0] < max(q):
q.append(q[0])
q.popleft()
name.append(name[0])
name.popleft()
else:
q.popleft()
sheet.append(name[0])
name.popleft()
for num, loca in enumerate(sheet):
if loca==location:
return num+1
이것도 거의 한시간 넘게 고민해서 짠거 같다..
특히 반복문 과정에서 else에 sheet에 name[0]를 추가해줘서 순서를 가져와야 했던게 안습이었다..
굉장히 아름다운 풀이 . . .
저렇게 큐 안에 튜플형태로 저장시키면서 이름값을 추가해준 것과,
if 문에서 any를 활용해서 가장 큰 것보다 작으면 뒤에 붙여주고,
아니면 answer에 1을 더해주고 location과 확인해서 맞으면 정답을 리턴하는게 굉장히 심플했다.
어케 이런걸 짜지? ?
나도 재야의 고수가 되고파 !