코딩테스트/programmers (python)
programmers / 프로세스(2단계) / python
seulll
2023. 12. 26. 20:13
*문제 출처는 프로그래머스에 있습니다.
코딩테스트 연습 - 프로세스 | 프로그래머스 스쿨 (programmers.co.kr)

모범답안
def solution(p, l):
ans = 0
m = max(p)
while True:
v = p.pop(0)
if m == v:
ans += 1
if l == 0:
break
else:
l -= 1
m = max(p)
else:
p.append(v)
if l == 0:
l = len(p)-1
else:
l -= 1
return ans
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
알고리즘
- any()함수를 이용해 리스트의 원소를 조건 검색한다.
- 큐의 첫 번째 데이터를 cur에 넣고 pop()함수를 사용해 제거한다.
- 큐에 들어있는 데이터의 값들이 cur의 값보다 큰지 비교한다
- 큐에 들어있는 모든 데이터가 cur 값보다 크면 cur을 다시 queue에 삽입한다.
- cur 값보다 큰 값이 없다면 answer 값을 1 증가
- cur의 인덱스 값이 찾는 값의 위치인 location 값과 같다면 answer을 리턴