안녕하세요. 오늘은 프로그래머스 2레벨 프린터 문제를 풀어보겠습니다!
프린터 문제는 인덱스가 바꾸기 때문에 로케이션이 포함된 구조체를 만들어서 문제를 풀었습니다!
1. waitingList를 만들어 입력된 우선순위를 넣어주겠습니다.
2. queue에서 가장 큰 우선순위가 맨 앞에 올대까지 enqueue와 dequeue를 해줍니다.
3. dequeue하면서 location을 비교하여 같을 시 while문을 탈출하고 answer를 return해줍니다.
import Foundation
struct list {
var location:Int = 0
var priorities:Int = 0
}
func solution(_ priorities:[Int], _ location:Int) -> Int {
var waitingList:[list] = [list]()
var newlist:list = list()
for i in 0..<priorities.count {
newlist.location = i
newlist.priorities = priorities[i]
waitingList.append(newlist)
}
var answer = 1
while true {
let currentPriority = waitingList[0].priorities
var canRemove = true
for i in 1..<waitingList.count {
if waitingList[i].priorities > currentPriority {
var bufferWaitingList:[list] = [list]()
for j in 0..<i {
newlist.location = waitingList[j].location
newlist.priorities = waitingList[j].priorities
bufferWaitingList.append(newlist)
}
for j in 0..<i {
waitingList.removeFirst()
}
waitingList.append(contentsOf: bufferWaitingList)
canRemove = false
break
}
}
if canRemove == true {
if waitingList[0].location == location {
break
}
waitingList.removeFirst()
answer += 1
}
}
return answer
}
오늘은 여기까지이며, 질문이 있으시면 댓글로 남겨주세요!
감사합니다.
'Algorithm Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스] 소수 찾기 with Swift (0) | 2022.01.10 |
---|---|
[프로그래머스] 정렬 가장 큰 수 with Swift (모든 반례) (1) | 2022.01.07 |
[프로그래머스] 월간 코드 챌린지 시즌3 빛의 경로 사이클 with Swift (0) | 2022.01.04 |
[프로그래머스] 2019 카카오 개발자 겨울 인턴십 튜플 with Swift (0) | 2022.01.03 |
[프로그래머스] 2020 카카오 인턴십 수식 최대화 with Swift (0) | 2022.01.02 |