본문 바로가기

Algorithm/Programers - C++

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

문제

 

풀이

using namespace std;

long long solution(int price, int money, int count)
{
    long long answer = 0;
    for(int i=count; i>0; i--) {
        answer += (price * i); 
    }
    return answer-money>0?answer-money:0;
}

answer의 자료형이 int일 경우 잘못된 정답이 나오게 되는데 int와 long long자료형의 값의 범위가 다르기 때문이다.

유형이름 바이트 값의 범위
int 4 –2,147,483,648
 ~ 2,147,483,647
long long 8 –9,223,372,036,854,775,808
 ~ 9,223,372,036,854,775,807

int의 값이 범위를 넘어서면 엉뚱한 답을 반환하기 때문에 옳은 답이 나오지 않게 된다.

 

 

 

 


https://docs.microsoft.com/ko-kr/cpp/cpp/data-type-ranges?view=msvc-170 

 

데이터 형식 범위

자세한 정보: 데이터 형식 범위

docs.microsoft.com