Programming/데일리 알고리즘
[HackerRank] Luck Balance (javascript)
kimyejin
2021. 5. 31. 22:30
그리디 알고리즘 문제 유형이다.
두 가지 조건에 맞게 내림차순한다.
- 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;
}