강의로 돌아가기
임재성

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

제가 생각하는거는 각 시간이 갈때마다 남은 처리시간을 보고 가장 짧은걸 먼저 처리하는 방법인데 코드는 구현했는데 안되네요 ㅠㅠ
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단위로 처리할 수 있는 줄 알았는데 그게 아니더군요.
하나의 작업을 처리하기 시작하면 그 작업은 무조건 끝까지 처리되는 구조입니다.

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