Archive/Questions

[programmers/Swift] 프린터

Marco 2022. 5. 11. 20:24
728x90

programmers.co.kr - 코딩테스트연습 - Lv.2 - 스택/큐 - 프린터

 

코딩테스트 연습 - 프린터

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

programmers.co.kr

Constraints :

  • 현재 대기목록에는 1개 이상 100개 이하의 문서가 있습니다.
  • 인쇄 작업의 중요도는 1~9로 표현하며 숫자가 클수록 중요하다는 뜻입니다.
  • location은 0 이상 (현재 대기목록에 있는 작업 수 - 1) 이하의 값을 가지며 대기목록의 가장 앞에 있으면 0, 두 번째에 있으면 1로 표현합니다.

 

Solution.swift :

//
//  Created by Yongwoo Marco on 2022/05/09.
//  Copyright © 2022 Yongwoo Marco Kim. All rights reserved.
//

func solution(_ priorities:[Int], _ location:Int) -> Int {
    var queue = priorities.enumerated().map { ($0.element, $0.offset == location) }
    var count = 0
    
    while !queue.isEmpty {
        let dequeue = queue.removeFirst()
        if queue.filter({ $0.0 > dequeue.0 }).count > 0 {
            queue.append(dequeue)
        } else {
            count += 1
            guard !dequeue.1 else { break }
        }
    }
    return count
}

print(solution([2, 1, 3, 2], 2))  // 1
print(solution([1, 1, 9, 1, 1, 1], 0))  // 5

How I tried this :
통과하지 않았으면 제일 첫 부분을 없앨것 같다.

편리성을 위해서 location을 지정해주고 반복문을 돌다보니

처음 priorities 수 만큼 반복이 일어나서 그 부분이 시간이 많이 들까봐 걱정했는데

해당 풀이도 다행이 통과되었다.

문제에 관한 모든 저작권 : https://programmers.co.kr/

728x90