Algorithm/Java

프로그래머스 - 부족한 금액 계산하기 java :: 위클리 챌린지

고고마코드 2022. 6. 21. 13:21
반응형
82612번 문제

코딩테스트 연습 - 부족한 금액 계산하기 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 부족한 금액 계산하기

새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이

programmers.co.kr


풀이

주로 이런 문제는 반복문을 활용하면 쉽게 풀 수 있지만 count가 커질수록 성능은 많이 떨어지게 됩니다.

등차수열의 합 공식으로 문제를 풀면 빠르고 쉽게 해결할 수 있습니다.

 

  • 풀이코드
public long solution2(int price, int money, int count) {
    return Math.max(((long) price * count * (count+1) / 2) - money, 0 );
}

지문의 입출력 예를 보면

3 + 6 + 9 + 12 = 30 (total)

30 - 20 = total - money = 10 (남은 금액)

남은 금액이 0 이상이면 남은 금액을 반환하고, 아니면 0을 반환하면 됩니다.

 

해당 공식은 아래와 같습니다.

✔ price: 3

✔ count: 4

이제 이 2개만 알면 공식에 대입해서 풀 수 있습니다.

 

✅ price 앞에 (long) 으로 명시적 타입 변환을 한 이유는 금액의 값이 커서 계산 중 int형을 벗어나 실패하는 케이스가 있더라구요. 

 

✔ 테스트 케이스 실행 속도: 0.05ms

반응형