강의로 돌아가기
questcoinn

처리 규칙에 대한 질문이요

현재 처리중인 프로세스가 있으면서 그 중에 요청이 들어왔고, 프로세스 처리가 끝나자마자 또 다른 요청이 들어왔을때 그 요청의 수행시간이 더 짧으면 뭐를 먼저 처리해야되나요

작성중인 코드―solution.js
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
function solution(jobs) {
    let answer = 0;
    let time;
    let notfin = true;
    let list = [];
    let info = jobs.map((x) => {
        return {
            request: x[0],
            process: x[1],
            time: 0,
            status: 0
        }
    }).sort((a, b) => {
        return a.request - b.request; 
    });
    while(notfin) {
        for(let i in info) {
            if(info[i].status === 0) {
                time = info[i].request;
                break;
            }
        };
        info.forEach((x) => {
            if(x.status === 0 && x.request <= time) {
                list.push(x);
                time += x.process;
            }
        });
        time = list[0].request;
        // 첫번째 실행
        time += list[0].process;
        list[0].time = time - list[0].request;
        list[0].status = 1;
        list.shift();
        // list sort
        list.sort((a, b) => {
            return a.process - b.process;
        });
        list.forEach((x) => {
            time += x.process;
            x.time = time - x.request;
            x.status = 1;
        });
        list = [];
        notfin = info.some((x) => {
            return x.status === 0;
        });
    }
    info.forEach((x) => {
        answer += x.time;
    });
    answer = Math.floor(answer/info.length);
    return answer;
}
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.