[문제풀이] 프로그래머스 위클리 챌린지 <부족한 금액 계산하기> 자바 풀이

kai6666·2022년 7월 3일
0
post-thumbnail

👉 문제

문제 설명
새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다.
놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요.
단, 금액이 부족하지 않으면 0을 return 하세요.

입출력 예
price, money, count, result
= 3, 20, 4, 10

이용금액이 3인 놀이기구를 4번 타고 싶은 고객이 현재 가진 금액이 20이라면, 총 필요한 놀이기구의 이용 금액은 30 (= 3+6+9+12) 이 되어 10만큼 부족하므로 10을 return 합니다.

✨ 풀이

class Solution {
    public long solution(int price, int money, int count) {
        long totalPrice = 0;
        long price2 = price;
        long result = 0;
        for(long i = 1; i <= count; i++) {
            totalPrice += price * i;
        }

        if(money >= totalPrice) {
            result = 0;
        } else {
            result = totalPrice - money;
        }

        return result;
    }
}

풀이 노트:

  • 프로그래머스 문제는 처음 풀어보는데 릿코드에 비해 난이도가 낮은 것 같다.
  • 순탄하게 풀었는데 20여가지의 테스트케이스 중 4~5개만 오류가 나서 왜인고 봤더니, 아마 소수점까지 있는 값을 넣어서 int형으로 연산했을 때 값이 부정확하게 떨어져서인 것 같았다. long으로 바꿔주니 모두 통과!
  • 난이도가 쉬운 문제라서 풀었다는 것보다 어떻게 풀었냐가 중요한 것 같은데, 내 풀이는 쓸데없이 긴 편에 속하는 것 같다.
class Solution {
    public long solution(long price, long money, long count) {
        return Math.max(price * (count * (count + 1) / 2) - money, 0);
    }
}

가장 많은 좋아요를 받은 다른 분들의 풀이는 단 한 줄이다😨 수학적인 개념을 적용하면 이렇게도 풀 수 있구나 감탄했다. 앞으로 다른 사람들의 풀이를 많이 참고해서 배워야지..🤫

profile
성장 아카이브

0개의 댓글

관련 채용 정보