Skip to content

Commit 33635ed

Browse files
Merge pull request #2061 from CodingTestStudy2/이진희
[이진희] Day20
2 parents 310ba3a + 3f76ad4 commit 33635ed

1 file changed

Lines changed: 42 additions & 0 deletions

File tree

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/*
2+
3+
1. 아이디어 : 실제 소모되는 에너지, 일을 시작하기위해 필요한 에너지가 각각 주어졌으므로, 최소 소모되는 에너지량을 구한다.
4+
처음에는 1. minimum 오름차순 -> 2. actual 오름차순으로 정렬했지만, 최소 비용을 구하기 위해서는 minimum-actual 값 기준
5+
오름차순으로 배열을 정렬해야함
6+
7+
남는 에너지가 많은 일부터 처리할수록 다음 task시 에너지 보충이 적어지기 때문
8+
9+
10+
2. 시간복잡도 : O(NlogN)
11+
12+
3. 자료구조/알고리즘 : 그리디, 커스텀 정렬
13+
14+
*/
15+
class Solution {
16+
public int minimumEffort(int[][] tasks) {
17+
// 순서 상관없이 모든 일을 끝낼 수 있는 "최소"에너지
18+
19+
int ans = 0;
20+
int currEnergy = 0;
21+
22+
Arrays.sort(tasks, (a,b) -> {
23+
return Integer.compare(b[1]-b[0], a[1]-a[0]);
24+
});
25+
26+
for(int i=0; i<tasks.length; i++) {
27+
int a = tasks[i][0];
28+
int m = tasks[i][1];
29+
30+
int diff = currEnergy-m;
31+
32+
if(diff<0) {
33+
ans-=diff;
34+
currEnergy=m;
35+
}
36+
37+
currEnergy-=a;
38+
}
39+
40+
return ans;
41+
}
42+
}

0 commit comments

Comments
 (0)