순서도가 높은 인쇄 문서부터 인쇄하면 된다.
요청한 문서가 몇 번째로 인쇄되는지 구하는 문제이다.
# A, B, C, D
# 2 1 3 2
import collections
def solution(priorities, location):
priorities_cnt = dict((collections.Counter(priorities).items()))
priorities_idx = [(num, idx) for idx, num in enumerate(priorities)]
location = (priorities[location], location)
answer = 0
while priorities_idx:
check = priorities_idx[0][0]
if check == max(priorities_cnt): # 순서도가 가장 높은 인쇄물?
answer += 1
if priorities_idx[0] == location: # 요청한 인쇄물?
return answer
# 인쇄
priorities_idx.pop(0)
priorities_cnt[check] -= 1
if priorities_cnt[check] == 0:
del priorities_cnt[check]
continue
else: # 순서도가 가장 높지 않다.
tmp = priorities_idx.pop(0)
priorities_idx.append(tmp)
print(solution([1, 1, 9, 1, 1, 1], 0))
먼저, 중요도마다 개수를 셌다.
출력을 위해 (인쇄물, index)로 이루어진 리스트를 만들었다.
리스트에서 요소를 하나씩 꺼내며 확인하는 것은 '가장 높은 중요도인가?'이다.
맞는다면 그 인쇄물은 출력한다.
아니라면, 그 인쇄물은 맨 뒤로 보낸다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][Python] 더 맵게 (0) | 2021.11.25 |
---|---|
[프로그래머스][Python] 다리를 지나는 트럭 (0) | 2021.11.24 |
[프로그래머스][Python] 기능개발 (0) | 2021.11.05 |
[프로그래머스][Python] 베스트앨범 (0) | 2021.11.03 |
[프로그래머스][Python] 위장 (0) | 2021.11.02 |