반응형
URL : https://programmers.co.kr/learn/courses/30/lessons/42587
문제를 정리해 보자
- 인쇄 대기목록의 가장 앞에있는 문서를 대기목록에 꺼낸다(i라고 가정하겠다)
- 나머지 인쇄 대기목록에서 i보다 중요도가 높은 문서를 하나라도 존재하면, i를 대기목록 마지막으로 넣는다
- 없는경우에는 i를 인쇄한다.
예를 들어 문제에 제시된 4개의 문서 ABCD 대해 중요도가 [2,1,3,2]라고 한다면 아래와 같은 순서로 출력이된다
1) 2 1 3 2 / A B C D
2) 1 3 2 2 / B C D A
3) 3 2 2 1 / C D A B
4) 2 2 1 / D A B
5) 2 1 / A B
6) 1 / B
7) 끝
풀이 방식은 두개의 큐를 가지고 풀었다. 하나는 주어진 우선순위가 담긴 큐를, 하나는 location검사를 위해서 각 우선순위에 대한 index가 담긴 배열을 선언하였다. 풀이는 아래와 같다.
from collections import deque
from typing import Any, MutableSequence
def solution(priorities : MutableSequence, location : int):
# i : location, j : value
values = deque(priorities)
indexes = deque([i for i in range(len(priorities))])
loop = True
print_priority = 0
while loop:
max_value = max(values)
i,j = indexes[0],values[0]
if j == max_value:
if i == location:
print_priority += 1
return print_priority
else:
print_priority += 1
indexes.popleft()
values.popleft()
else:
indexes.append(indexes.popleft())
values.append(values.popleft())
이 문제와 동일한 유형의 문제가 백준에도 있다.
https://www.acmicpc.net/problem/1966
반응형
'CS 지식 > Algorithm-Problem Solving 정리' 카테고리의 다른 글
[백준] 15624 피보나치수 7 (0) | 2022.01.27 |
---|---|
[프로그래머스] [1차] 캐시 (0) | 2022.01.25 |
[백준] 2164 카드 2 (0) | 2022.01.24 |
[구름] 큐(Queue) (0) | 2022.01.24 |
[프로그래머스] 주식가격 (0) | 2022.01.18 |