https://school.programmers.co.kr/learn/courses/30/lessons/42587

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 해결을 위한 과정

이 문제는 deque를 이용하면 쉽게 해결할 수 있는 문제였습니다. 과정은 다음과 같습니다.

1. priorities 배열을 조회하며 인덱스를 포함한 pair형태로 deque에 넣어준다.

2. 그 후 반복문으로 조회를 하면서 맨 앞에 원소와 인덱스 값을 꺼낸 뒤 다시 한번 for문으로 조회를 하며 deque내부에 더 높은 우선순위가 있는지 찾는다.

3. 더 높은 우선순위가 있다면 append로 뒤에 넣어준다.

4. 더 높은 우선순위가 없다면 처리한다.

4-1. 단 이때 처리된 인덱스가 location과 일치하는지 확인한다.


소스코드
from collections import deque

def solution(priorities, location):
    answer = 0
    q = deque()
    for i in range(len(priorities)):
        q.append((priorities[i], i))
    ans = 0
    
    while len(q) != 0:
        now, idx = q.popleft()
        flag = True
        for i in range(len(q)):
            next, nIdx = q[i]
            if next > now:
                q.append((now, idx))
                flag = False
                break
        if flag == True:
            ans += 1
            if idx == location:
                answer = ans
                break
            
    return answer

+ Recent posts