𝝅번째 알파카의 개발 낙서장

screen

[프로그래머스 / JAVA] Level 1 부족한 금액 계산하기 (82612)

posts

알고리즘

시리즈 톺아보기

프로그래머스

프로그래머스
count

부족한 금액 계산하기 🔗

랭크 사용 언어
Level 1 JAVA

🔗 부족한 금액 계산하기

문제 설명 🔗

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

제한사항 🔗

  • 놀이기구의 이용료 price : 1 ≤ price ≤ 2,500, price는 자연수
  • 처음 가지고 있던 금액 money : 1 ≤ money ≤ 1,000,000,000, money는 자연수
  • 놀이기구의 이용 횟수 count : 1 ≤ count ≤ 2,500, count는 자연수

입출력 예 🔗

price money count result
3 20 4 10

입출력 예 설명 🔗

입출력 예 #1

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

풀이 🔗

시대상을 역행하는 놀이기구다. 타면 탈 수록 가격을 더 받는다니...

count 횟수만큼 for문을 수행하여 price * count를 누적하여 반환한다.

반환값이 long임에 주의하자. 간혹 아무 생각없이 int로 변수를 선언해서 반환해버리는 경우가 있는데, int에서 더 많은 범위를 가지는 long으로의 변환은 아무런 문제없이 자동으로 이루어지므로, int를 반환해도 문제가 없다. 하지만 체점 과정에서 int의 범위를 넘어버리는 수가 생길 경우 온전히 표현하지 못하게 되므로 오답이 발생한다.

코드 🔗

JAVA

0/**
1 * 부족한 금액 계산하기 클래스
2 *
3 * @author RWB
4 * @since 2021.12.12 Sun 16:43:20
5 */
6class Solution
7{
8 /**
9 * 해답 반환 메서드
10 *
11 * @param price: [int] 이용료
12 * @param money: [int] 소지금
13 * @param count: [int] 놀이기구를 이용한 횟수
14 *
15 * @return [long] 해답
16 */
17 public long solution(int price, int money, int count)
18 {
19 long total = 0;
20
21 while (count > 0)
22 {
23 total += (long) price * count;
24
25 count--;
26 }
27
28 return Math.max(total - money, 0);
29 }
30}

totalint로 반환하지 않도록 주의하자.