그리디 알고리즘 문제 유형이다.
두 가지 조건에 맞게 내림차순한다.
- T[i]이 다를 경우 내림차순
- T[i]이 같을 경우 L[i]을 내림차순
내림차순한 배열을 순회하며 더하는데, 진 경기일 경우에는 값을 뺀다.
진 경기는 다음 조건을 만족하는 경기이다.
k <= i && contests[i][1] === 1
function luckBalance(k, contests) {
// Write your code here
contests.sort((a, b) => {
if (a[1] !== b[1]) {
return b[1] - a[1];
} else {
return b[0] - a[0];
}
});
let answer = 0;
for (let i = 0; i < contests.length; i++) {
// 최소 k(인덱스로는 k-1번)만큼은 져야하므로, T[i]가 1이고 i가 k번째부터는 이기는 경기이다.
if (k <= i && contests[i][1] === 1) {
answer -= contests[i][0];
} else {
answer += contests[i][0];
}
}
return answer;
}
'Programming > 데일리 알고리즘' 카테고리의 다른 글
이진 탐색 Binary Search (1) | 2022.05.08 |
---|---|
[HackerRank] Minimum Swaps 2 (javascript) (0) | 2021.05.30 |
[HackerRank] Special String Again (javascript) (0) | 2021.05.29 |
[HackerRank] Largest Rectangle (Javascript) (0) | 2021.05.25 |
(210519:BTB) Lesson 6. MaxProductOfThree (0) | 2021.05.19 |