jangyoqr   5년 전

한번 봐주시면 감사하겠습니다.

djm03178   5년 전

24번째 줄에서 오버플로우가 발생할 수 있습니다.

jangyoqr   5년 전

말씀해주신 부분 수정 해봤는데 안되네요 ㅠㅠ 이 문제에서 나올 수 있는 최대 값으로 돌려봤는데,  자료형이 long long이라서  오버플로는 발생 안하는 것 같아요

djm03178   5년 전

아니요, 이 코드에서 24번째 줄만 고치면 맞습니다. (long long)arr[j]로만 바꾸면 됩니다.

djm03178   5년 전

그리고 자료형이 long long인 건 sum2가 long long인 거지, arr[j]는 int형입니다. int * int = int이므로, 이 결과가 int 범위를 벗어나면 오버플로가 발생한 겁니다. 뒤늦게 long long으로 변환되어 sum2에 더해져도, 이미 때는 늦었죠. long long으로 변환을 먼저 하고, 그 뒤에 곱셈이 이루어져야 합니다.

jangyoqr   5년 전

와 진짜 감사드립니다. 제가 너무 몰랐네요 ㅠㅠ 복받으실 거에요. 감사합니다!!

댓글을 작성하려면 로그인해야 합니다.