*문제 출처는 프로그래머스에 있습니다.
코딩테스트 연습 - 프로세스 | 프로그래머스 스쿨 (programmers.co.kr)
![](https://blog.kakaocdn.net/dn/bpMQKd/btsEBthxTwp/cKHM7y7qfqPtyh8b97O28k/img.png)
모범답안
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을 리턴
'코딩테스트 > programmers (python)' 카테고리의 다른 글
programmers / 부분 문자열 이어 붙여 문자열 만들기(0단계) / python (0) | 2024.01.01 |
---|---|
programmers / 피로도 (2단계) / python (0) | 2023.12.27 |
Lv.2 다음 큰 숫자, 피보나치 수, 카펫 (0) | 2023.08.22 |
프로그래머스 Lv.2 올바른 괄호, ★숫자의 표현 (0) | 2023.08.17 |
프로그래머스 Lv.2 최댓값과 최솟값, 문자열 만들기 (0) | 2023.08.16 |