알고리즘/programmers
[ 프로그래머스 / 파이썬 ] 프린터 - deque
jungeun960
2021. 4. 15. 19:05
프로그래머스 스택/큐
- 나의 풀이
- 순서를 표시할 deque와 순서에 해당하는 중요도값을 저장한 dic값을 만들어줌
- 맨 앞 대기목록의 중요도와 나머지 중요도를 비교해 중요도가 가장 높으면 출력을 아니면 뒤로 빼준다 -> deque를 써야하는 이유 앞뒤로 빠져야되니까
from collections import deque
def solution(priorities, location):
answer = 0
queue = deque(i for i in range(len(priorities)))
dic = {}
for i in range(len(priorities)):
dic[i] = priorities[i]
while queue:
tmp = queue.popleft()
dic_value = list(dic.values())
if dic[tmp] == max(dic_value):
del dic[tmp]
answer+=1
if tmp == location:
break
else:
queue.append(tmp)
return answer
+ (GOOD) 풀이
- deque에 중요도와 순서를 함께 저장함
from collections import deque
def solution(priorities, location):
answer = 0
# v : 중요도 , i : 순서
queue = deque((v,i) for i,v in enumerate(priorities))
while queue:
item = queue.popleft()
if item[0] < max(queue)[0]:
queue.append(item)
else:
answer+=1
if item[1] == location:
break
return answer
# 자연수 뒤집어 배열로 만들기
def solution(n):
answer = []
for i in str(n):
answer.append(int(i))
answer.reverse()
return answer
#return list(map(int, reversed(str(n))))
# 나누어 떨어지는 숫자 배열
def solution(arr, divisor):
answer = []
for i in arr:
if i%divisor == 0:
answer.append(i)
if len(answer) == 0:
answer = [-1]
else:
answer.sort()
return answer
반응형