아무나개발하자

프린터 본문

코딩테스트

프린터

개발천재나천재 2023. 1. 5. 09:16

문제 

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

 

프로그래머스

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

programmers.co.kr

 

 

 

풀이

"""
1. 2 1 3 2 -> A B C D
2. 1 3 2 2 -> B C D A
3. 3 2 2 1 -> C D A B
4. 2 2 1 -> D A B (C)
5. 2 1 -> A B (D)
6. 1 -> B (A)
7. (B)

출력 순서 -> C D A B

우선 순위 [2, 1, 3, 2] -> 3 2 2 1
인텍스  [0, 1, 2, 3] -> 2 3 0 1

문제해결방법
1. 인덱스와 우선순위를 deque로 만듬 
2. 우선순위에서 max idx를 찾음 -> 찾은 idx 번수만큼 인덱스 queue를 popleft -> append
3. 우선순위 dq도 찾은 idx만큼 popleft() -> append
4. 우선순위 popleft(), 인덱스 popleft()
5. 1 ~ 4 반복
"""
from collections import deque

def solution(priorities, location):
    answer = 0
    dq_pri = deque(priorities)
    dq_idx = deque()
    
    for i in range(len(priorities)):
        dq_idx.append(i)
    
    while (True):
        idx = dq_pri.index(max(dq_pri))
        
        for _ in range(idx):
            elem_pri = dq_pri.popleft()
            elem_idx = dq_idx.popleft()
            
            dq_pri.append(elem_pri)
            dq_idx.append(elem_idx)
        
            
        dq_pri.popleft()
        _location = dq_idx.popleft()
        answer += 1
        
        if (_location == location):
            break
        
    return answer

 

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

'코딩테스트' 카테고리의 다른 글

다음 큰 숫자  (0) 2023.01.08
행렬의 덧셈  (0) 2023.01.07
H-Index  (0) 2023.01.04
멀리 뛰기  (0) 2023.01.04
같은 숫자는 싫어  (0) 2023.01.03