
def solution(numbers):
nfor i in range(len(priorities)):
x = priorities.pop(priorities[i])
return result
pop으로 접근한 것 부터가 잘못
priorities[i]는 값, 그런데 pop()은 인덱스다.
-> 예를 들어, priorities = [2, 1, 3]일 때 priorities[0] = 2, 그러면 priorities.pop(2) → 인덱스 2 위치의 값 제거
리스트를 순회하면서 동시에 pop()하면 리스트 크기 변동 발생
-> for i in range(len(priorities)) 여기선 처음에 길이만큼 고정 루프를 도는데
그 안에서 pop()을 쓰면 리스트 길이가 줄어듦
pop() 은 큐처럼 쓰기엔 적절하지 않음 (deque가 더 적합)
-> 우선순위를 비교하고 다시 뒤로 보내야하기 때문에 리스트로는 효율도 떨어지고,insert(0, x) 같은 비효율 연산이 필요해진다.
from collections import deque
def solution(priorities, location):
answer = 0
queue = deque([(i, p) for i,p in enumerate(priorities)])
print(queue)
while queue:
current = queue.popleft()
if any(current[1] < q[1] for q in queue):
queue.append(current)
else:
answer += 1
if current[0] == location:
return answer
popleft() 로 앞에서 꺼내고, 우선순위 비교해서 다시 넣는 방식이 가장 자연스러움!