반응형
82612번 문제
코딩테스트 연습 - 부족한 금액 계산하기 | 프로그래머스 (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
반응형
'Algorithm > Java' 카테고리의 다른 글
프로그래머스 - 시저 암호 java (0) | 2022.06.27 |
---|---|
프로그래머스 - 최소직사각형 java :: 위클리 챌린지 :: 86491 (0) | 2022.06.22 |
프로그래머스 - 가운데 글자 가져오기 java (0) | 2022.06.20 |
프로그래머스 - 헤비 유저가 소유한 장소 MySQL/Oracle (0) | 2022.06.17 |
프로그래머스 - 같은 숫자는 싫어 java (0) | 2022.06.16 |