class Solution {
public long solution(int price, int money, int count) {
long answer = 0;
for (int i = 0; i < count; i++) {
answer += (i + 1) * price;
}
return answer > money ? answer - money : 0;
}
}
문제 읽고 바로 풀어서 제출 했는데 ,
한번에 통과되어서 메모와 타이머를 측정하지 않았다.
다른 사람 코드를 부러갔다가 새로운 방법을 배워서 기억하기 위해 글을 쓰기로했다!
class Solution {
public long solution(long price, long money, long count) {
return Math.max(price * (count * (count + 1) / 2) - money, 0);
}
}
나는 이 문제를 price * ( n + (n - 1) + (n - 2) + ... + 2 + 1 ) 으로 풀었는데,
가져온 코드에서는 price * (n * (n + 1)) / 2 로 계산했다.
그냥 외우기는 힘드니, 테스트 고고 🤔
n = 4
1) n + (n - 1) + (n - 2) + ... + 2 + 1
= 4 + 3 + 2 + 1
= 10
2) count * (count + 1) / 2
= 4 * 5 / 2
= 20 / 2
= 10
n = 6
1) n + (n - 1) + (n - 2) + ... + 2 + 1
= 6 + 5 + 4 + 3 + 2 + 1
= 21
2) count * (count + 1) / 2
= 6 * 7 / 2
= 42 / 2
= 21
오호..!