코딩테스트 30일차
부족한 금액 계산하기
새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다.
놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요.
단, 금액이 부족하지 않으면 0을 return 하세요.
function solution(price, money, count) {
var answer = -1;
// 놀이기구를 count번 탔을 때의 이용료 계산
var totalCost = price * (count * (count + 1)) / 2;
// 모자라는 금액 계산
var shortage = totalCost - money;
// 모자라는 금액이 없으면 0 반환
if (shortage <= 0) {
answer = 0;
} else {
answer = shortage;
}
return answer;
}
✏️풀이
먼저, 변수 answer를 -1로 초기화합니다. 이 변수는 모자라는 금액을 저장하기 위해 사용될 것입니다.
다음으로, 놀이기구를 count번 탔을 때의 총 이용료를 계산합니다. 이용료는 등차수열의 합 공식을 사용하여 계산됩니다. (count * (count + 1)) / 2를 이용하여 놀이기구를 탄 횟수에 따른 총 이용료를 계산합니다.
모자라는 금액을 계산합니다. 이용료에서 현재 가지고 있는 금액(money)을 뺀 값을 shortage 변수에 저장합니다.
모자라는 금액이 없는 경우(shortage <= 0), 즉 현재 가지고 있는 금액으로 모든 이용료를 충당할 수 있는 경우, answer를 0으로 설정합니다.
모자라는 금액이 있는 경우, answer를 shortage로 설정합니다.
마지막으로, answer를 반환하여 함수의 결과를 출력합니다.
예산
S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다.
물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 1,000원을 신청한 부서에는 정확히 1,000원을 지원해야 하며, 1,000원보다 적은 금액을 지원해 줄 수는 없습니다.
부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 return 하도록 solution 함수를 완성해주세요.
function solution(d, budget) {
var answer = 0;
// 신청 금액을 오름차순으로 정렬
d.sort(function(a, b) {
return a - b;
});
// 예산을 순차적으로 확인하면서 부서에 물품 지원
for (var i = 0; i < d.length; i++) {
if (budget >= d[i]) {
budget -= d[i]; // 지원한 금액을 예산에서 차감
answer++; // 지원한 부서 수 증가
} else {
break; // 예산 초과 시 반복문 종료
}
}
return answer;
}
✏️풀이
먼저, 변수 answer를 0으로 초기화합니다. 이 변수는 최대 지원 가능한 부서의 수를 저장하기 위해 사용될 것입니다.
배열 d를 오름차순으로 정렬합니다. 이렇게 함으로써 신청 금액이 작은 순서대로 처리할 수 있습니다.
예산을 순차적으로 확인하면서 부서에 물품을 지원합니다. 반복문을 사용하여 배열 d의 요소를 하나씩 검사합니다.
만약 현재 예산 budget이 현재 부서의 신청 금액 d[i]보다 크거나 같다면, 해당 부서에 물품을 지원할 수 있습니다. 예산에서 해당 금액을 차감하고, answer 변수를 증가시킵니다.
그렇지 않으면 예산 초과이므로 반복문을 종료합니다.
반복문이 종료되면, answer를 반환하여 함수의 결과로 출력합니다. 이는 최대로 지원 가능한 부서의 수를 의미합니다.