[スタック/キュー]プログラマ-プリンタ/python


リンク


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

問題の説明



I/O例



💡 構想

  • インデックスには、別の値
  • が必要です.
  • 優先度インデックスを個別のリストとして宣言
    1)優先度[0]がJ値
    2)優先度内部でJ値が最大の場合、
    2-1) priorities.pop(0)
    2-2) result.append(idx(0))
    3)優先度が最大値でない場合、
    3-1) priorities.append(priorities.pop(0))
    3-2) idx.append(idx.pop(0))
    4)出力順のインデックス値を含む結果
    ->したがって、resultはlocationと等価なindex+1を返し、
  • を返します.

    Code

    def solution(priorities, location):
        
        result=[]
        idx = [i for i in range(len(priorities))]
        
        while len(priorities)!=0:
            if priorities[0]==max(priorities):
                result.append(idx.pop(0))
                priorities.pop(0)
            else:
                priorities.append(priorities.pop(0))
                idx.append(idx.pop(0))
                
        for i in range(len(result)):
            if result[i]==location:
                return i+1
                
        // 아래 for문
        // return result.index(location)+1 으로도 접근 가능!