본문 바로가기
Algorithm/Programmers

[Algorithm/Programmers] 프린터

by thoonk: 2021. 1. 14.

프린터 Level2

문제 풀이: 

1. 인덱스와 우선순위를 쌍으로 배열에 저장한다. 정렬한 우선순위를 다른 배열에 저장한다.

2. 첫번째 쌍의 우선순위와 정렬한 우선순위의 첫번째 값과 비교한다. 

3. 우선순위가 같다면 카운트를 증가시키고 정렬한 우선순위 첫번째를 제거한다. 

3-1. 쌍의 인덱스가 원하는 인덱스와 같다면 카운트 값을 리턴한다. 

4. 우선순위가 같지 않다면 마지막에 다시 삽입한다. 

 

코드: 

import Foundation

func solution(_ priorities:[Int], _ location:Int) -> Int {
    
    var result = 0
    var list = [(Int, Int)]()
    var pList = priorities.sorted(by: >)
    
    for (i, priority) in priorities.enumerated() {
        list.append((i, priority))
    }

    while !list.isEmpty {
        let now = list.removeFirst()
        let maxP = pList.first
        
        if now.1 == maxP {
            result += 1
            pList.removeFirst()
            if now.0 == location {
                break
            }
        } else {
            list.append(now)
        }
    }
    
    return result
}

문제: 

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

 

코딩테스트 연습 - 프린터

일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린

programmers.co.kr

 

 

댓글