반응형
입력
각 작업에 대해 작업이 요청되는 시점, 작업의 소요시간을 담은 2차원 배열 jobs가 매개변수로 주어집니다
출력
작업의 요청부터 종료까지 걸린 시간의 평균을 가장 줄이는 방법으로 처리하면
평균이 얼마가 되는지 return 하도록 solution 함수를 작성해주세요
풀이
각 작업의 작업시간을 기준으로 정렬을 한다
이 점을 유의해야하는데 작업은 작업시간이 적더라도 시작할 수 있는 시간이 다른 작업보다 늦다면 후에 처리한다
요청시간이 현재 타이머보다 높다면 다음 작업의 요청시간을 살펴보고
요청시간이 현재 타이머보다 낮다면 작업을 수행한다
Swift 전체 코드
var job = jobs.sorted(by: { $0.last! < $1.last! })
var total = 0
var timer = 0
var i = 0
while !job.isEmpty {
let min = job.sorted(by: { $0.first! < $1.first!}).first!.first!
if timer < min {
timer = min
}
if job[i].first! <= timer {
total += job[i].last! + timer - job[i].first!
timer += job[i].last!
job.remove(at: i)
i = 0
} else {
if job.count == 1 {
timer = job.first!.first!
}
i += 1
}
if i > job.count - 1 {
i = 0
}
}
return total / jobs.count
반응형
'개발 > 알고리즘' 카테고리의 다른 글
[LeetCode] 79. Word Search (0) | 2021.04.12 |
---|---|
[백준] DP - 11726번 2xN 타일링 (0) | 2021.04.09 |
[프로그래머스] 스택/큐 - 프린터 (0) | 2021.04.07 |
[프로그래머스] 2021 Kakao Blind Recruitment - 합승 택시 요금 (0) | 2021.04.06 |
[프로그래머스] 2021 Kakao Blind Recruitment- 신규 아이디 추천 (0) | 2021.04.04 |