Search

김민지

2.문제이름
3. 수행시간[초(s)]
1020
좋아요 누르기
좋아요 수
: 0
5 more properties

풀이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번 과정을 반복한다.