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
56
57
58
59
60
61
62
63
64
65
|
import java.util.*;
class Solution {
public static int getTime(ArrayList<String> list, Integer[][] sortedJobs) {
int currentTime = 1001;
int totalTime = 0;
// 최초 요청 시간으로 초기화
for (int i = 0; i < sortedJobs.length; i++) {
if (currentTime > sortedJobs[i][0])
currentTime = sortedJobs[i][0];
}
// 모두 할당될 때 까지 수행
while (!list.isEmpty()) {
boolean flag = true;
for (int i = 0; i < list.size(); i++) {
String[] s = list.get(i).split(",");
// 요청 작업을 현재 시작할 수 있을 때
if (Integer.parseInt(s[1]) <= currentTime) {
// 현재 시간 및 작업 시간 갱신
currentTime += sortedJobs[Integer.parseInt(s[0])][1];
totalTime += currentTime - Integer.parseInt(s[1]);
list.remove(i);
flag = false;
break;
}
}
// 수행 가능한 것이 없을 경우
if (flag)
currentTime++;
}
// 평균 시간 반환
return totalTime / sortedJobs.length;
}
public int solution(int[][] jobs) {
int answer = 0;
int len = jobs.length;
Integer[][] sortedJobs = new Integer[len][];
ArrayList<String> list = new ArrayList<String>();
// int to Integer
for (int i = 0; i < len; i++) {
sortedJobs[i] = Arrays.stream(jobs[i]).boxed().toArray(Integer[]::new);
}
Arrays.sort(sortedJobs, new Comparator<Integer[]>() {
// 걸리는 시간을 기준으로 오름차순 정렬
@Override
public int compare(Integer[] o1, Integer[] o2) {
int a = o1[1] - o2[1];
// 걸리는 시간이 같으면 먼저 온 순서대로 정렬
if (a == 0)
return o1[0] - o2[0];
return a;
}
});
for (int i = 0; i < len; i++) {
// 해당 인덱스와 요청 시간을 같이 저장
list.add(i + "," + sortedJobs[i][0]);
}
answer = getTime(list, sortedJobs);
return answer;
}
}
|
cs |
Comparator를 사용할 때 int형은 안 되는 줄 알고 Integer로 변환하여 수행하였다.
1
2
3
4
5
6
7
8
9
|
Arrays.sort(jobs, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
int a = o1[1] - o2[1];
if (a == 0)
return o1[0] - o2[0];
return a;
}
});
|
cs |
제출 후 다시 수정하여 위 경우에도 되는 것을 확인하였다.
'Programmers > Level3' 카테고리의 다른 글
모두 0으로 만들기 (0) | 2021.08.17 |
---|---|
여행경로 (0) | 2021.08.17 |
불량 사용자 (0) | 2021.08.16 |
최고의 집합 (0) | 2021.08.13 |
베스트앨범 (0) | 2021.08.13 |