본문 바로가기

Programmers

[Java] 프로그래머스 : 부족한 금액 계산하기

📌 문제

https://programmers.co.kr/learn/courses/30/lessons/82612

 

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

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

programmers.co.kr

 

📌 풀이

  • int로 로직을 구현하고 보니 일부 Edge Case에 걸려서 고민 끝에 다른 사람의 풀이를 참고하여 풀었다.
  • (price의 최댓값은 2500, count의 최댓값 2500이다. 두 최댓값을 넣고 진행하면 int의 최대 범위를 넘어 오버플로우가 발생한다.)
  • sum변수에 대입하기 전에 long타입으로 형 변환을 해주었다.

 

📌 코드

package programmers;

public class Pro_220521 { // 부족한 금액 계산하기
    public static long solution(int price, int money, int count) {
       long answer = 0;
       
       long sum = 0;
        for (int i = 1; i <= count; i++) {	
            sum += (long) price * i;	// sum += 3*1 + 3*2 + 3*3 + 3*4 long으로 형변환
        }
        if (sum > money){	// sum > money 보다 크면 그 뺀 값 리턴
        answer = sum - money;
        }
        return answer;	// 그렇지 않으면 0을 리턴
    }

    public static void main(String[] args) {
    	// 도움 코드
        int price = 3;
        int money = 20;
        int count = 4;

        System.out.println(solution(price, money, count));

    }
}