1. 문제
이용료는 price, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받는다. 예를들어, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300이다.
놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액 money에서 얼마가 모자라는지를 return하는 함수를 완성하시오.
2. 제한
금액이 부족하지 않으면 0을 return한다.
price : 1 ≤ price ≤ 2,500인 자연수이다.
money : 1 ≤ money ≤ 1,000,000,000
count : 1 ≤ count ≤ 2,500인 자연수이다.
3. 정답
class Solution {
public long solution(int price, int money, int count) {
long result;
long answer;
result = (long)((1 + count) * (count) / 2)*(price);
answer = money - result;
if (answer >= 0) {
return 0;
}
else {
return answer * -1;
}
}
}
4. 설명
4-1. 등차수열이라는 것을 이용하여 총 요금의 합을 쉽게 계산한다.
4-2. 가지고 있는 돈에서 총 요금을 뺀다.
4-3. 뺀 값이 0 이상이면 돈이 부족하지 않으므로 return 0을 한다.
4-4. 그게 아니라면 돈이 부족하므로 -1을 곱하여 부족한 돈을 return한다.
5. 참고
5-1. (price)만큼을 빼내고 난 뒤에 등차수열의 합을 계산하면 식이 간단해진다. 예를 들어 100, 200, 300, 400 이라고 해보자. 100 * (1 +2 + 3 + 4)로 쉬운 등차수열로 바꿀 수 있다. count가 등차수열의 마지막 항이고 1이 등차수열의 첫번째 항이 되는 것이다. 그리고 마지막에 100을 다시 곱해주면 된다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
2016년(JAVA) (0) | 2022.01.17 |
---|---|
내적(JAVA) (0) | 2022.01.17 |
행렬의 덧셈(JAVA) (0) | 2022.01.15 |
핸드폰 번호 가리기(JAVA) (0) | 2022.01.15 |
x만큼 간격이 있는 n개의 숫자(JAVA) (0) | 2022.01.15 |