예전에 저도 런타임 에러 받아서 질문했었는데 원인이 같아 보이네요 (https://www.acmicpc.net/board/... )
입력값으로 2의 31제곱-1 값이 들어오고,
start = (1+2의 31제곱-1)/2 이 되고, end=2의 31제곱 -1일 경우
start+end에서 int형 범위를 넘어갑니다.
1654번 - 랜선 자르기
예전에 저도 런타임 에러 받아서 질문했었는데 원인이 같아 보이네요 (https://www.acmicpc.net/board/... )
입력값으로 2의 31제곱-1 값이 들어오고,
start = (1+2의 31제곱-1)/2 이 되고, end=2의 31제곱 -1일 경우
start+end에서 int형 범위를 넘어갑니다.
댓글을 작성하려면 로그인해야 합니다.
citizen 6년 전
이분탐색으로 최댓값을 구현하는 코드를 짜봤구요..
똑같이 N개로 나눌 수 있으면서 길이를 최대로 하기 위해서
middle을 (start+end+1)/2로 잡아두었습니다. (cnt == N인 경우에도 solve(middle, end)를 하기 위함이죠)
런타임에러로 가능해보이는 요소는
스택오버플로우나, 배열인덱스크기를 벗어나가나 일 것 같은데
위의 두 경우는 여러가지 테스트를 해보면서 에러를 일으키는 요소는 아닌것 같다고 추측했습니다.
코드에서 Int범위를 넘을 수 있는 cnt도 long자료형으로 선언해줬습니다.
문제가 되는 부분을 지적해주셨으면 합니다