programmers.co.kr/learn/courses/30/lessons/42587
이번 문제는 배열이 주어지고 정렬하는 문제로 보았다.
실 답을 구하려면 굳이 id를 정하고 정렬할 필요는 없어 보이지만
실제 프린터라고 생각해서 하나의 작업에 대해 id를 각각 추가하여 작성해봤다.
정렬 순서는 문제에서 제시해준 3단계를 그대로 따라하면 간단히 된다.
난 총 세부분으로 소스를 나눠 작성했다
첫번째 - 주어진 priorities에 각각 id를 지정
두번째 - priorities를 정렬(
문제에서 주어짐, 첫번째 목록의 우선순위가 대기중인 작업의 우선순위보다 낮다면 무조건 대기순위 뒤로 이동
대기중인 작업중 우선 순위가 더 큰게 없다면 대기순위에서 제거)
세번째 - 찾으려는 타깃이 언제 완료되는가 리턴
struct Work {
let id:Character
let priority:Int
}
func solution(_ priorities:[Int], _ location:Int) -> Int {
var works = [Work]()
var endArray = [Work]()
var lastId:Character = "a"
for priority in priorities {
let work = Work(id: lastId, priority: priority)
lastId = Character(Unicode.Scalar((lastId.unicodeScalars.first!.value) + 1)!)
works.append(work)
}
guard location < works.count else { return -1 }
let findTarget = works[location]
while works.count > 0 {
let target = works[0]
var notFind = true
for i in 1 ..< works.count {
// 뒷 대기열에 큰게 있다면 notFind = false
}
if notFind {
// 대기열에서 제거 endArray에 추가
}
}
for i in 0 ..< endArray.count {
// 찾으려는 id와 같은것의 i값 리턴
}
return -1
}
전체 소스는 아래 깃허브 페이지에 있다.
github.com/wiwi-git/Programmers-learn/blob/master/swift/Practice/Practice/Printer.swift
반응형
'iOS > swift' 카테고리의 다른 글
Guide Swift Programming Language 5.5 (0) | 2021.10.01 |
---|---|
UIPickerView 의 텍스트 색상 변경하는 방법 (0) | 2021.06.17 |
프로그래머스 - 기능개발 (0) | 2021.05.05 |
프로그래머스 - 모의고사 (0) | 2021.05.04 |
프로그래머스 - 다리를 지나는 트럭 (0) | 2021.05.03 |