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

박경희·2025년 2월 27일

코딩테스트

목록 보기
63/69

 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;
    }

0개의 댓글