쌓고 쌓다

[프로그래머스] 부족한 금액 계산하기 C++ 풀이 본문

알고리즘/프로그래머스

[프로그래머스] 부족한 금액 계산하기 C++ 풀이

승민아 2022. 7. 4. 16:08

https://programmers.co.kr/learn/courses/30/lessons/82612?language=cpp 

 

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

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

programmers.co.kr

 

전체 코드

#include <algorithm>
using namespace std;

long long solution(int price, int money, int count)
{
    long long answer = 0;
    
    long long sum=0;
    for(int i=1;i<=count;i++)
    {
        sum+=i*price;
    }
    
    if(sum<=money)
        answer=0;
    else
        answer=abs(money-sum);
    return answer;
}

 

그냥 풀면 테스트에서 실패가 난다.

몇가지 주의 사항이있다.

 

long long answer = 0;
long long sum=0;

놀이 기구 이용료는 최대 2500이다.

여기에 이용 횟수도 최대 2500번이다.

2500원을 2500번 타면은 비용은 int 범위를 넘어서게 된다.

그래서 answer과 sum은 long long으로 바꾸어 줘야 한다.

 

테스트케이스 4번에서 자꾸 실패가 떴었는데

아래와 같은 이유에서다.

 

처음에는 아래의 코드로 바로 답을 구했다.

answer=abs(money-sum);

이는 내가 가진 돈과 비용이 동일하거나 비용이 더 들때 맞는 정답 도출이다.

만약 내가 가진 돈이 비용보다 더 크다면 모자라는 일이 없으므로 답은 0이 되어야하지만

비용과 내가 가진 돈의 차이가 answer에 담기게 되므로 틀리게 된다.

그래서 아래처럼 if 문을 사용해야함.

if(sum<=money)
	answer=0;
else
	answer=abs(money-sum);

Comments