kanght1219   1달 전

어떻게 된건지 알 수가 없네요.

백준으로 돌리면 런타임 에러 나오고

Green55   1달 전

sort(arr, arr + n);//정렬

->

sort(arr, arr + k);//정렬

kanght1219   1달 전

이제 그걸 고쳤더니 시간초과가 나오는군요.

djm03178   1달 전

입력 범위가 int라고 해서 계산 결과도 int라는 보장은 없습니다. st + end도 int를 넘을 수 있고, total도 int를 넘을 수 있습니다.

kanght1219   1달 전

어찌저찌해서 바꾸니 두가지 문제가 생기는군요.

첫 번째로, 다시 런타임 에러가 발생합니다.

두 번째로, 예제를 넣어보면 답이 199가 나옵니다.

djm03178   1달 전

런타임 에러가 나는 건 st = 0이고 end = 0 또는 1이면 mid가 0이 되어 mid로 나눌 때 0으로 나누기가 발생하기 때문입니다.

예제가 틀리게 나오는 건, 개수가 같다고 해서 항상 그때의 mid가 답이 되는 것이 아니기 때문입니다. mid가 더 커지더라도 개수가 같을 수도 있습니다. 또한 마지막에 개수를 넘지 않아서 end = mid - 1이 실행된 후 st > ed가 되어 루프를 빠져나갔다면 마지막으로 실행된 mid는 답이 되지 못합니다.

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