HackerRank/Algorithms

[HackerRank] Implementation > Electronics Shop

ruming 2021. 10. 10. 18:57

정해진 예산 안에서 가장 비싼 값으로 키보드와 드라이버를 구매해야 한다. 예산보다 넘으면 -1을 출력하고 아니면 예산 안에서 가장 비싼 값을 출력한다.

 

int getMoneySpent(int keyboards_count, int* keyboards, int drives_count, int* drives, int b) {
    int cost = 0, max = 0;
    for(int i=0; i<keyboards_count; i++){
        for(int j=0; j<drives_count; j++){
            if(keyboards[i] + drives[j] <= b){
                cost = keyboards[i] + drives[j];
                if(cost > max)  max = cost;
            }
        }
    }
    if(cost == 0)    return -1;
    return max;
}

키보드와 드라이버 값을 이중 for문을 이용해 순서대로 더한다. 예산을 넘지 않을 때 cost에 값을 저장하고 cost와 max를 비교해 예산 이하에서 가장 큰 값을 max에 저장한다. cost에 값이 들어가지 않았으면 예산을 넘는다는 소리이므로 -1을 반환하고, 아니면 max를 반환한다.