[프로그래머스/Java] 부족한 금액 계산하기

daily_study_78·2021년 10월 29일
0

알고리즘

목록 보기
1/11

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/82612


문제


해결 과정

[실패]

public class Solution {
    public long solution(int price, int money, int count) {
        
        for (int i=0; i<count; i++) {
            total_price += price * (i+1);
        }
        
        if (total_price >= money) {
            return total_price - money;
        } else {
            return 0;
        }
    }
}

문제점

  • price최대값 2500, count최대값 2500이라 두 최대값을 넣으면 int의 최대범위를 넘어 overflow가 되기 때문

해결방안

  • 이용료 총 합은 (n*(1+n)) / 2로 표현할 수 있음(등비수열 합)
  • 이때, count를 강제로 형변환을 시켜줘 계산되는 값이 long으로 나오도록 유도

최종 코드

public class Solution {
    public long solution(int price, int money, int count) {
        
        long total_price = price * ((long)count * (1 + count) / 2);
        if (total_price >= money) {
            return total_price - money;
        } else {
            return 0;
        }
    }
}

0개의 댓글

관련 채용 정보