akqjqcjs7   3년 전

제가 올린 두개의 코드는 정답이 나왔습니다. 하지만 아래코드는 스스로 실행했을 때 74번 줄에서 오버 플로가 뜨고 답도 이상하게 출력이 되는데 정답이 된게 신기했습니다. 위에 코드는 아래코드 max와 m을 long long int로 바꾸니까 제 컴퓨터와 백준 둘다 문제없이 잘 나왔습니다. m같은 경우에는 (s + e)/2인데 극단적으로 

(1999999999 + 2000000000) / 2가 되어도 int형 범위를 벗어나지 않는데 왜 int형으로 설정하니까 오버플로가 나는지 잘모르겠습니다. 

위 코드는 longlongint = int + long long int 이고 아래 코드는 longlongint = int + int인데 이거랑 무슨 관계가 있을까요?

랜선 자르기 문제는 시간이 4ms가 나왔는데 이문제는 220ms가 나왔습니다. 두 코드는 매우 비슷해 크게 다른 점이 없을 것 같은데 시간차이가 나는지 궁금합니다.

ehdrmsl2001   3년 전

1999999999 + 2000000000 가 int 범위 밖이니까요

akqjqcjs7   3년 전

아 그렇다면 1999999999 + 2000000000가 한번 저장된 후 2로 나누어지는건가요?

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