
public long solution(int price, int money, int count) {
long answer = 0;
int sum = 0;
for (int i = 1; i <= count; i++) {
sum += price * i;
}
if (money < sum) {
answer = sum - money;
}
return answer;
}
sum 변수가 int 타입이면 오버플로우가 발생예를 들어:
price = 2,000, count = 2,500이면,
총 요금은 price × (1 + 2 + ... + 2500) → = 2000 × (2500 × 2501 / 2)
→ = 2000 × 3,126,250 = 6,252,500,000
int의 최대값은 2,147,483,647니까
그 이상 되는 순간 음수로 바뀌거나 엉뚱한 값이 돼서 틀린 결과가 나온다.
public static long solution(int price, int money, int count) {
long sum = 0;
for (int i = 1; i <= count; i++) {
sum += (long) price * i;
}
return (money < sum) ? (sum - money) : 0;
}