seok9211   4년 전

단순한건데 안되니깐 답답하네요.

질문글들 참고해서 price 와 cost 는 int 값을 넘을 수 있으니깐 변수를 크게 잡아줬고,

output 이 int가 표현할 수 있는 범위를 초과하면 -1 반환하게 했는데

어디가 문제일까요?

djm03178   4년 전

price와 cost는 long long이지만, b, c, i는 모두 int이므로 b * i, c * i는 모두 그 즉시 오버플로우가 발생하여 잘못된 값이 price와 cost에 들어가게 됩니다.

nahwasa   4년 전

추가로, 오답과는 별개로 이 문제의경우 전부 int형 변수만으로 처리 가능합니다.

seok9211   4년 전

@djm03178

@nahwasa

long long 으로 고치니깐 타임오버 되서 다시 식을수정했는데 이젠 런타임에러가 나네요;

vs 2019에서 했고 제출할때 c++ 버전바꿔보고 c로도 해서 내봤는데 런타임에러가 납니다 ㅠ

nahwasa   4년 전

c와 b가 같을때요!

seok9211   4년 전

@nahwasa

덕분에 해결했습니다. 감사합니다. 많이 배우고 가요.

ps: 혹시 division by zero 를 코드만 보시고 바로 아신건가요?

그리고 IDE 같은 걸로 디버깅하면 위험성같은걸 체크해서 볼 수 있는지 궁금합니다.

nahwasa   4년 전

런타임에러 관련된 오류 날만한곳이

대부분이 배열 인덱스 오버이고 나머지도 그리 많지 읺아서요. 

배열을 안쓰셨으니 더더욱!

런타임 에러는 말그대로 실행중 나는 에러라 사용자가 알아서 해결을 해줘야합니다.

ide에선 제가 알기론 못잡아줍니다.

nahwasa   4년 전

'그리 많지 읺아서요.'는 실제로는 런타임 에러 종류가 많은데, ide에서 잡아주는것도 있고,

여기서도 다른 에러 종류로 빠지는것도 있고해서 사실상 여기서 문제푸시다가 런타임 에러나면

배열 인덱스오버 / 0으로 나누기 / c계열에서 return을 0 이외의 문자로 하기 / null 포인터 익셉션 정도입니다.!

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