강의로 돌아가기
Bae.H.S

혹시 19번 실패되는 이유 아시는분 있나요?? ㅠㅠ

무엇이 문제인지 몰르겠심더 ㅜㅜ

작성중인 코드―solution.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import java.util.*

class Solution {
    fun solution(jobs: Array<IntArray>): Int {
        var answer = 0

        val jobList = ArrayList<IntArray>()
        var ms = Integer.MAX_VALUE
        for (job in jobs) {
            jobList.add(job)
            if (ms > job[0])
                ms = job[0]
        }

        val runningTimeList = ArrayList<Int>()

        while (jobList.isNotEmpty()) {

            var selectedIdx = -1
            var fastestJobTime = Integer.MAX_VALUE
            for (idx in jobList.indices) {
                val p = jobList[idx]
                if (p[0] <= ms && fastestJobTime > p[1]) {
                    selectedIdx = idx
                    fastestJobTime = p[1]
                }
            }

            if (selectedIdx == -1) {
                fastestJobTime = Integer.MAX_VALUE
                for (idx in jobList.indices) {
                    val p = jobList[idx]
                    if (fastestJobTime > p[1]) {
                        selectedIdx = idx
                        fastestJobTime = p[1]
                        ms = p[0]
                    }
                }
            }

            var runningJob = jobList.removeAt(selectedIdx)
            runningTimeList.add((ms - runningJob[0]) + runningJob[1])
            ms += runningJob[1]
        }

        var totalRunningTime = 0
        for (runningTime in runningTimeList) {
            totalRunningTime += runningTime
        }

        answer = totalRunningTime / runningTimeList.size

        return answer
    }
}
1 개의 답변
전현서

19번 테스트케이스가 실패한 이유는
중간에 요청작업이 끊긴 경우말고는 없습니다.
처음에 요청시간 기준으로 정렬하고
하나씩 불러올 때, 우선순위 큐로 작업소요시간 기준으로 넣어주는 작업을
모든 데이터가 없을 때까지, 한다고 가정해보면
중간의 요청시간이 텅비는 구간이 생기면, 프로그램은 무한루프를 돌게 됩니다.
jobs배열에 아직 값이 있고, 우선순위 큐에 값이 비었을 경우에 해당됩니다.
그럴 경우에 시간을 늘려주시거나, 그 다음 jobs를 강제로 끌어오신다음 그만큼 시간을 추가해주세요
그럼 19번 케이스는 통과될겁니다.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.