TIL | [알고리즘] 부족한 금액 계산하기(Java)

hyemin·2022년 3월 12일
0

알고리즘

목록 보기
12/38
post-thumbnail

THINKING

  1. count가 늘어날 때마다 result에 price*count를 더해준다 - for
  2. money가 result보다 큰 경우/ 아닌경우로 나눈다 - if
    • money > result - return 0
    • money < result - return -(money-result)

내 풀이

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

좋아요 많이 받은 풀이

class Solution {
    public long solution(int price, int money, int count) {
        return Math.max((long)price * (count * (1 + count) / 2) - money, 0); 
    }
}

회고

수학의 개념을 적절히 이용해야겠다는 생각이 들었다.
등차수열을 이용해 반복문을 돌리지 않고도 result값을 구할 수 있다는 점, if문을 쓰지 않고 Math.max를 이용할 수 있다는 것을 알았다.

형변환
money, price는 int형이지만, 최종 놀이이구 이용 금액은 price와 count가 높다면 int의 범위를 넘어갈 수 있어 (long)으로 변환해주어야했다.

테스트 케이스에서 실패가 뜨지 않았다면, 생각해내지 못했을 부분이었다.

0개의 댓글