728x90
https://school.programmers.co.kr/learn/courses/30/lessons/42587
스택/큐 문제라서 priorities와 index를 묶어서 큐로 만들어 둬야 할 것 같았다. 이렇게 만든 큐를 pop, append 해서 순서를 변경해 주고자 했다.
그리고 만든 큐와 함께 우선순위를 비교 하기 위해 priorities를 우선순위가 높은 순서대로 정렬을 해 줬다.
풀이 순서
if절에서 대기 하고 있는 큐의 첫 원소가 찾으려고 하는 location이면서 내림차순으로 정렬한 우선순위와 같으면 answer 즉 출력되는 순서를 return 하도록한다.
하지만 우선순위가 아니라면 큐에서 pop 후 append 해서 다시 맨 뒤로 보낸다.
우선순위인데 location이랑 일치하지 않으면 없어도 된다고 판단해서 큐랑 priorities에서 지워버렸다.
-> 오답
def solution(priorities, location):
answer = 0
queue = [(idx, p) for idx, p in enumerate(priorities)]
priorities.sort(reverse=True)
while True:
if queue[0][0] == location and queue[0][1] == priorities[0]:
return answer
elif queue[0][1] != priorities[0]:
cur = queue.pop(0)
queue.append(cur)
else:
passing = queue.pop(0)
del priorities[0]
answer += 1
return answer
근데 정답보다 자꾸 1만큼 작은 값이 나왔다. 코드를 다시 보니 if 절에서 asnwer에 1을 더 해줘야 출력 순서가 나오는게 아닌가... ; 이런 실수를..
-> 정답
def solution(priorities, location):
answer = 0
queue = [(idx, p) for idx, p in enumerate(priorities)]
priorities.sort(reverse=True)
while True:
if queue[0][0] == location and queue[0][1] == priorities[0]:
return answer + 1
elif queue[0][1] != priorities[0]:
cur = queue.pop(0)
queue.append(cur)
else:
passing = queue.pop(0)
del priorities[0]
answer += 1
return answer
수정했을 때 모든 케이스를 통과했다!
728x90