[C++] 프로그래머스 부족한 금액 계산하기
2022. 1. 29.
반응형

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

 

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

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

programmers.co.kr

 

1. 서론

 

풀이 쓸 필요도 없는 종이조차 필요하지 않은 문제이나... 되게 재밌는 포인트가 있다 ㅎㅎ

 

2. 문제 풀이

 

놀이기구의 이용료 price가 있다. 이 놀이기구를 이용할 때 이용 금액이 n번 사용할 때마다 n배 되어서 요금이 오른 가격이 적용된다.

2번 타면 price의 2배 가격을 내고 이용해야 한다. 그리고 예산인 money가 주어지는데 놀이기구를 n번 이용한다고 가정했을 때 예산에서 얼마가 오버되는지를 구하는 문제이다. 만약 오버되지 않는다면 0을 return 한다.

 

당연히 위에 적혀 있는 대로 문제를 풀었다. 반복문을 돌려서 answer를 구해서 money에서 빼고 만약 money가 answer보다 크면 0을 return 하도록 예외처리도 똑바로 해줬다. 나는 당연히 다 맞았겠지~ 생각하고 코드를 돌렸는데 73.8점인가가 나왔다.

 

깜짝 놀라서 왜지? 하고 두리번거리다 보니 바로 알았다. 이 문제의 solution 함수가 long long 타입이었다는 것을... return 값이 클 수 있겠다 하고 money의 범위를 봤는데 컸다. 근데 문제에서 이미 주어졌던 answer 변수를 그냥 사용했는데 int형으로 정의되어 있어서 몇 케이스가 에러가 났던 것이다... 어이없음

 

3. 코드 설명

 

using namespace std;

long solution(int price, int money, int count)
{
    long answer = 0;

    for (int i = 1; i <= count; i++)
        answer += price * i;
    
    if (answer < money)
        return 0;
    
    return answer - money;
}

 

설명할 필요도 없다. 다만 long long이 아니라 그냥 long으로 바꿔도 되더라... ㅎ

 

 

 

 

반응형
myoskin