프로그래머스 level2 프로세스

Kim Yongbin·2023년 9월 6일
0

코딩테스트

목록 보기
43/162

Problem

https://school.programmers.co.kr/learn/courses/30/lessons/42587?language=python3

Solution

내 풀이

from collections import deque

def solution(priorities, location):
    answer = 0
    Q = deque(priorities)
    while len(Q) > 0:
        q = Q.popleft()
        
        if len(Q) > 0 and q < max(Q):
            Q.append(q)
            if location == 0:
                location = len(Q)
        else:
            answer += 1
                
        if location == 0:
            return answer
        else:
            location -= 1
            
    return answer

Q에 현재 프로세스의 우선순위보다 높은 것이 있다면 Q 맨 뒤에 넣고 location을 조정해주었다.

다른 사람 풀이

from collections import deque

def solution(priorities, location):
    answer = 0
    Q = deque((i, p) for i, p in enumerate(priorities))
    
    while len(Q) > 0:
        q_set = Q.popleft()
        
        if any(q_set[1] < q[1] for q in Q):
            Q.append(q_set)
        else:
            answer += 1
            if q_set[0] == location:
                return answer

    return answer

location을 따로 조작하지 않고, 프로세스의 idx와 우선순위를 튜플로 묶어서 같이 이동하면서 주어진 location과 비교하였다. location 조작에서 오류에 대한 위험도 낮고, 코드도 훨씬 깔끔하다.

Reference

프로그래머스 level2 프로세스 - 다른 사람 풀이

profile
반박 시 여러분의 말이 맞습니다.

0개의 댓글