혜랑's STORY

[HackerRank] Luck Balance 본문

2021 SISS 21기 활동/여름방학 C언어

[HackerRank] Luck Balance

hyerang0125 2021. 8. 25. 11:36
Practice > Algorithms > Greedy > Luck Balance

code

int luckBalance(int k, vector<vector<int>> contests) {
    int sum = 0;
    sort(contests.begin(), contests.end(), greater<vector<int>>());
    
    for(int i=0; i<contests.size(); i++){
        if(contests[i][1] != 0 && k>0){
            k--;
            sum += contests[i][0];
        }
        else if(contests[i][1] == 0)
            sum += contests[i][0];
        
        else
            sum -= contests[i][0];
        
    }
    return sum;
}
  • 최대한 남은 행운 포인트를 높게 만드는 문제이다. 규칙은 이기면 필요한 행운 포인트만큼 차감하고 지면 필요한 행운 포인트만큼 더해준다. 이때 중요도가 1인 것은 k만큼 경기에서 질 수 있다. (중요도 1 - k 수만큼 꼭 이겨야 함)
  • 따라서 내림차순으로 정렬을 한 뒤, 중요도가 1이고 k가 0보다 크면 k를 감소시키고 행운 포인트를 증가시켰다.
  • 중요도가 0인 것은 져도 상관없는 경기이므로 모두 행운 포인트를 더하였고 중요도는 1이지만 져도 괜찮은 수가 남아있지 않다면 어쩔 수 없이 경기에서 이기고 행운 포인트를 차감했다.

결과

'2021 SISS 21기 활동 > 여름방학 C언어' 카테고리의 다른 글

[HackerRank] Maximum Perimeter Triangle  (0) 2021.08.25
[HackerRank] Grid Challenge  (0) 2021.08.23
[HackerRank] Marc's Cakewalk  (0) 2021.08.22
[HackerRank] Staircase  (0) 2021.08.22
[HackerRank] Funny String  (0) 2021.08.12