반응형
250x250
Notice
Recent Posts
Recent Comments
Link
DecordRay
[프로그래머스] Level2 : 프린터[Python] 본문
728x90
반응형
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42587
풀이 :
1. 우선순위와 location에 해당하는 문서인지 판별 여부를 print_list(스택)에 저장
찾을 문서이면 1
찾을 문서가 아니면 0
을 print_list의 두번째 원소로 저장
2. print_list 첫번째 원소의 우선순위를 priority, 찾는 문서인지 여부를 loc 변수에 저장
3. 문서의 우선순위 비교
꺼낸 문서의 우선순위가 가장 높다면
-> 꺼낸 문서를 스택에서 삭제, 우선순위 리스트에서도 현재 우선순위 삭제
꺼낸 문서의 우선순위가 가장 높지 않다면
-> print_list(스택)의 맨 마지막에 추가 후 첫번째 원소 삭제, 우선순위도 동일하게 진행
4. 꺼낸 문서가 찾는 문서라면 break
코드 :
from collections import deque
def solution(priorities, location):
answer = 0
print_list = deque()
for i in range(len(priorities)): # 1.우선순위와 location에 해당하는 문서인지 판별 여부를 print_list(스택)에 저장
if i == location:
print_list.append([priorities[i],1]) # 찾을 문서이면 1
else:
print_list.append([priorities[i],0]) # 찾을 문서가 아니면 0
while print_list:
priority = print_list[0][0] # 2.print_list 첫번째 원소의 우선순위와 찾는 문서인지 여부 저장
loc = print_list[0][1]
if priority == max(priorities): # 3.꺼낸 문서의 우선순위가 가장 높다면
print_list.popleft() # 꺼낸 문서를 스택에서 삭제
priorities.remove(priorities[0])# 우선순위 리스트에서도 현재 우선순위 삭제
answer += 1 # answer + 1
if loc == 1: # 4.꺼낸 문서가 찾는 문서라면 break
break
else: # 꺼낸 문서의 우선순위가 가장 높은 것이 아니라면
print_list.append([priority,loc]) # 스택의 맨 위로 추가
print_list.popleft() # 스택 첫번째 원소 삭제
priorities.append(priorities[0]) # 우선순위 리스트도 동일하게 진행
priorities.remove(priorities[0])
return answer
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Level2 : [1차] 뉴스 클러스터링[Python] (0) | 2023.01.13 |
---|---|
[프로그래머스] Level2 : n^2 배열 자르기[Python] (0) | 2023.01.12 |
[프로그래머스] Level2 : 튜플[Python] (0) | 2023.01.10 |
[프로그래머스] Level2 : 위장[Python] (0) | 2023.01.09 |
[프로그래머스] Level2 : 괄호 회전하기[Python] (0) | 2023.01.09 |
Comments