풀이1
|
코드 작성하기
def solution(priorities, location):
answer=1
idx=0
while(idx<=location) :
change=False
for i in range(idx+1, len(priorities)) :
if(priorities[idx]<priorities[i]) :
priorities.append(priorities.pop(idx))
if location==idx :
location=len(priorities)-1
else:
location-=1
change=True
break
if not change :
if idx==location :
return answer
else:
idx+=1
answer+=1
return answer
Python
복사
|
코드 설명하기
1.
현재 맨 앞에 있는 문서보다 우선순위가 높은 문서가 있는지 확인한다.
a.
우선순위 높은 문서가 있다면
i.
현재 문서를 맨 뒤로 보낸다
ii.
문서들이 앞으로 당겨졌으므로 location을 1감소 시킨다. 이때, 현재 맨 앞에 있는 문서라면 location을 맨 뒤의 인덱스로 바꾼다.
b.
우선 순위가 높은 문서가 없다면 프린트를 했기 때문에 다음 문서를 확인하기 위해 idx를 1증가 시키고 answer를 1 증가시킨다. 이때 idx가 location이라면 우리가 찾고 있는 문서가 프린트되는 상황이 때문에 answer를 return 한다.
풀이2
|
코드 작성하기
def solution(priorities, location):
answer=0
queue=[(idx, priority) for idx, priority in enumerate(priorities)]
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
return answer
Python
복사
|
코드 설명하기
1.
queue에 (idx, 우선순위)를 모두 넣는다.
2.
맨 앞에 문서를 꺼낸다.
3.
queue에 우선순위가 더 높은 문서가 하나라도 있으면 꺼낸 문서를 맨 뒤로 넣는다.
4.
queue에 우선순위가 높은 문서가 없다면 answer를 1 증가시키고 우리가 찾는 문서라면 answer를 return 한다.
5.
2~4번 과정을 반복한다.