Skip to content

[Algorithm] 프린터 #171

Closed
Closed
@hwangJi-dev

Description

@hwangJi-dev

💬 문제

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


💬 Idea

1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다.
2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다.
3. 그렇지 않으면 J를 인쇄합니다.

💬 풀이

import Foundation

func solution(_ priorities:[Int], _ location:Int) -> Int {
    var priorities = priorities.reversed().map({ Int($0) })
    var printQueue: [Int] = []
    var idx = abs(location - (priorities.count - 1))
    
    while !priorities.isEmpty {
        let p = priorities.popLast()!
        if p < priorities.max() ?? p {
            idx = idx == priorities.count ? 0 : idx + 1
            priorities.insert(p, at: 0)
        } else {
            printQueue.append(p)
            if idx == priorities.count {
                break
            }
        }
    }
    
    return printQueue.count
}

소요시간 : 30분

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions