https://school.programmers.co.kr/learn/courses/30/lessons/42587?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
from collections import deque
def solution(priorities, location):
queue = deque([(priority, idx) for idx, priority in enumerate(priorities)])
cnt = 0
while queue:
curr_process = queue.popleft()
if queue and curr_process[0] < max(queue, key = lambda x: x[0])[0]:
queue.append(curr_process)
else:
cnt += 1
if curr_process[1] == location:
break
return cnt
max값을 비교하는 과정에서 queue가 비어있는 상황에 런타임 에러 나서 queue 조건을 추가해줘야했다.
그래서
max값을 따로 저장하는 방식으로 바꾸는 게 좋을듯
from collections import deque
def solution(priorities, location):
queue = deque([(priority, idx) for idx, priority in enumerate(priorities)])
cnt = 0
max_priority = max(priorities)
while queue:
curr_process = queue.popleft()
if curr_process[0] < max_priority:
queue.append(curr_process)
else:
cnt += 1
if curr_process[1] == location:
return cnt
if queue:
max_priority = max(queue, key=lambda x: x[0])[0]
return cnt
반응형
'ALGORITHM' 카테고리의 다른 글
알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - 벨만포드 (3) | 2024.10.13 |
---|---|
알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - 56. 최단 경로 구하기 (4) | 2024.10.13 |
프로그래머스 | PCCP 기출 문제 1번 | 동영상 재생기 (Python) (1) | 2024.10.10 |
프로그래머스 | 네트워크 (Python) (1) | 2024.10.01 |
프로그래머스 | 키패드 누르기 (Python) (0) | 2024.10.01 |