강의로 돌아가기
임재성

반례 한개만 제시해주실분 ㅠㅠ 아무리 봐도 잘 모르겠네요;

제가 생각하는거는 각 시간이 갈때마다 남은 처리시간을 보고 가장 짧은걸 먼저 처리하는 방법인데 코드는 구현했는데 안되네요 ㅠㅠ
import java.util.*;

class Solution {
public int solution(int[][] jobs) {
int answer = 0;

int count = 0;
int time = 0;
int small = 1001;
int small_pos = -1;

    count = jobs.length;
    while(count > 0){

        small_pos = -1;
        small = 1001;
        for(int i = 0 ;i < jobs.length ;i++){                

            if(jobs[i][0]<=time && jobs[i][1] != 0){
                if(small > jobs[i][1]){                        small_pos = i;                        small = jobs[i][1];                    }                    
            }

        }

        if(small_pos != -1){
            jobs[small_pos][0]++;
            jobs[small_pos][1]--;//1ms 진행됨
            answer++;
            if(jobs[small_pos][1] == 0){
                jobs[small_pos][0]--;
                answer += (time - jobs[small_pos][0]);
                count--;                                                
            }              
        }
        time++;            
    }

    return answer/jobs.length;
}

}

1 개의 답변
임재성

문제 해결했습니다.!!
제가 문제를 잘못이해 하고 있었네요;;
저는 한번에 하나의 작업을 처리할 수 있다는 말이 작업을 분할해서 1ms단위로 처리할 수 있는 줄 알았는데 그게 아니더군요.
하나의 작업을 처리하기 시작하면 그 작업은 무조건 끝까지 처리되는 구조입니다.

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