문제
풀이
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
'Algorithm > Programers - C++' 카테고리의 다른 글
[프로그래머스]스택/큐 - 주식가격 (0) | 2022.02.08 |
---|---|
[프로그래머스] 같은 숫자는 싫어 / unique (0) | 2022.02.08 |
[프로그래머스]최소직사각형 (0) | 2022.02.05 |
[프로그래머스] 2016년 (0) | 2022.02.04 |
[프로그래머스]두 개 뽑아서 더하기 (0) | 2022.02.03 |