728x90
반응형
📌 문제링크
https://school.programmers.co.kr/learn/courses/30/lessons/42587#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📌 문제설명
- (문제 생략)
- 사용한 테스트 케이스 참고
📌 풀이과정
- 처음에는 인덱스도 따로 카운트 하려 했다. (i = 0으로 두고..) 그런데 이렇게 되니 인덱스 증가를 꽤 귀찮게 코드 작성해야 했다.
- 이걸 해결하고자 큐에다가 우선순위 값만 넣지 말고, 인덱스 값도 튜플로 같이 저장해두면 되겠다 싶어 아래처럼 작성했더니 성공...⭐⭐⭐
반응형
📌 풀이코드
# location에 있는 프로세스가 몇번째로 실행되는지
def solution(priorities, location):
p_q = [] # 큐 역할
for i, p in enumerate(priorities): # (인덱스, 우선순위값)
p_q.append((i, p))
cnt = 0 # 몇 번째로 실행되는지 세는 중
while p_q:
i, p = p_q.pop(0)
pvalues = [p[1] for p in p_q] # p_q에서 우선순위값만 모은 임시 리스트
if p >= (max(pvalues) if pvalues else 0): # 이 경우: 실행되고 끝남
cnt += 1
if i == location:
return cnt
else: # p < max(pvalues) => 현재 p값보다 더 큰 우선순위 값이 있는 경우임
p_q.append((i, p))
728x90
반응형