사용 언어 - Python3
문제 - 프린터
정답
인덱스와 원소를 함께 고려하는 큐 문제
(정답 맞춘 여부 X / 코드 풀이)
1. enumerate() 인덱스와 원소를 동시에 접근하여 큐를 만든다.
priorities = [2,1,3,2] 인 경우, queue = [(0,2),(1,1),(2,3),(3,2)] 가 된다.
2.큐의 맨 왼쪽 값을 cur에 저장한다. cur = (0,2)
3.1. any() 사용하여 cur[1] < q[1]인 경우가 하나라도 있으면 cur를 큐에 append한다.
2보다 더 중요한 3짜리 문서가 있으므로 (0,2)는 큐의 맨 뒤로 이동하게 된다.
3.2. 그렇지 않다면, answer += 1 하면서 answer 변수를 통해 몇번째로 return 되는지 카운트한다.
만약 cur[0] 인덱스가 구하려는 location 인덱스와 같다면, answer를 return한다.
# 다른 사람의 풀이
def solution(priorities, location):
queue = [(i,p) for i,p in enumerate(priorities)]
answer = 0
while True:
cur = queue.pop(0)
if any(cur[1] < q[1] for q in queue):
queue.append(cur)
else:
answer += 1
if cur[0] == location:
return answer
백준에도 유사한 문제가 있다. 먼저 풀어본게 도움이 되었다.
레퍼런스
- 정답 깃허브
'Algorithm > 스택&큐&덱&힙' 카테고리의 다른 글
[프로그래머스 lv 2] 주식가격 (0) | 2023.01.26 |
---|---|
[프로그래머스 lv 2] 다리를 지나는 트럭 (1) | 2023.01.26 |
[프로그래머스 lv 2] 올바른 괄호 (0) | 2023.01.25 |
[프로그래머스 lv 2] 기능개발 (0) | 2023.01.25 |
[프로그래머스 lv 1] 같은 숫자는 싫어 (0) | 2023.01.25 |
댓글