plzrun   8년 전

어디부분이 문제일까요?

아마 마지막 입력부분을 처리하지 못해서 시간초과가 나는것 같습니다.


문제를 푼 방법은, 둘로 쪼갠다음 중간부분만 처리했습니다.

먼저 두개를 쪼개서 얻은 (최소 거리)^2을 d라고 하면,

sqrt(d)+1을 sqrtd라고 하였습니다.

그리고 중간 좌표값 co[mid]로 부터 i를 하나씩 감소시키고, j는 하나씩 증가시키면서

이중 for문을 돌려서 x좌표의 차이가 d이하일때까지만 돌리도록 하였습니다.


그러면 이중 포문에서 거의 몇개 돌지도 않고 반복문을 빠져나올 것으로 예상이 되는데요.

아무튼 이렇게 해서 계속 거리를 구해서 d값을 업뎃합니다.


아마 같은 수 10만개가 들어왔을때 시간초과가 뜨는듯 한데, (이 이중포문을 다 도니까...? ㅠ)

어떻게 해결해야 할까요??

plzrun   8년 전

해결했어요... t*t==d일때에도 break를 넣어주었더니 시간안에 들어왔습니다 ㅠ

kimgs0725   8년 전

감사합니다. 문제 푸는데 도움이 되었습니다.

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