문제
https://school.programmers.co.kr/learn/courses/30/lessons/42587
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
입출력

해설
배열의 길이가 단순히 1 <= len(priorities) <= 100 이기에 단순 구현으로도 풀릴 것이라고 생각했다.
일단 흘러가는 로직 자체는 단순하다.
1. 제일 앞에 있는 프로세스를 하나 꺼낸다.
2. 현재 꺼낸 프로세스보다 우선순위가 높은 것이 있다면 다시 집어 넣는다.
3. 만약 없다면 현재 꺼낸 것을 실행한다.
여기서 맨 앞에 있는 프로세스를 꺼낸다는 점에서 Queue라는 자료구조를 이용하여 풀이를 진행하면 좋을 것이라고 생각했다. O(1)
그 후 현재 갖고 있는 프로세스 중에서 우선순위가 더 높은 것을 판단하기 위해서 배열을 재탐색해주었다. O(N)
위의 프로세스를 반복하면서 내가 찾는 프로세스였는지 확인해주었다. O(1)
정답코드
더보기
'''
'25. 09. 21.(일)
1. 프로세스 하나 꺼내기(젤 앞에 있는 것)
2. 우선순위가 더 높은 것이 있다면 다시 넣기
3. 없으면 현재 1번에서 뽑은 것 실행
1 <= xi <= 100 (배열의 길이)
location의 위치가 몇 번째로 실행되는가
'''
from collections import deque
def solution(priorities, location):
answer = 0
dq = deque([[value, i] for i, value in enumerate(priorities)])#queue로 만들어주기
while 1:
value, Index = dq.popleft()
#나머지 벨류 값 중에서 높은 것이 없는지 확인
is_better = False
for v, idx in dq:
if value < v:
is_better = True
break
#큰 것이 있음
if is_better:
dq.append([value, Index])
continue
#여기까지 왔다면 현재 수를 하나는 뺀 것임.
answer += 1
#없으면 현재 값을 없앨 것임.
#내가 찾던 숫자인지 확인
if Index == location:
break
return answer
깃허브 : https://buly.kr/3u3fp8H
'코딩테스트 > programmers' 카테고리의 다른 글
| 프로그래머스 / bfs / 게임 맵 최단거리 (0) | 2025.09.23 |
|---|---|
| 프로그래머스 / 해시 / 롤케이크 자르기 (0) | 2025.09.21 |
| 프로그래머스 / 해시 / 전화번호 목록 (0) | 2025.09.20 |
| 프로그래머스 / 구현 / 튜플 (0) | 2025.09.14 |
| 프로그래머스 / 순열 / 피로도 (0) | 2025.09.08 |