df1097   4년 전

1. 점들을 x좌표대로 정렬한다

2. x좌표의 가장 가운데 존재하는 점을 선택한 후 y축에 평행한 선을 그어 좌표상에 파티션을 나눈다.

3. 선의 왼쪽, 선의 오른쪽 두 파티션이 나오는데 하나의 파티션에만 속한 점 두 개의 길이 vs 다른 두 파티션의 점 두 개 사이의 거리를 계산해야한다.

4. 왼쪽과 오른쪽 각각의 최솟값을 구한 후, x좌표의 범위를 기준선 +- min(최솟값)을 정한다.

5. y좌표 기준으로 정렬 후 밑에서 부터 min보다 작은 거리의 점 두 개의 조합을 찾는다.


이런 방식으로 진행되는데, O(n) = nlog2n 으로 생각됩니다. 그에 따라 나름 코딩을 해보았으나, 시간초과가 발생합니다. 혹시 시간초과를 해결할 수 있는 방법이 있을지, 잘못된 코딩습관이 있는 것인지 궁금합니다. 

감사합니다.

df1097   4년 전

input() 대신 sys.stdin.readline()를 사용하여 해결하였습니다.

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