bububu111   4년 전

채점번호 13051310과 13051321을 비교해서 보시면

List는 집 주소를 오름차순으로 정렬한 배열로

13051310은 left를 List[0]이라 하고 right는 List[N-1] - List[0]으로 했습니다.

그런데  13051321에서 left를 1이라 하고 right는 List[N-1] - 1로 해도 똑같이 정답으로 나왔습니다.

아무래도 모든 테스트케이스에서 첫번째 집주소가 항상 1이여서 이런 현상이 나온다고 생각합니다.

문제 조건에서 첫번째 집주소가 1이라는 내용이 없어서 조건에 첫번째 집주소는 1이라고 조건을 추가하던가

아니면 첫번째 집주소가 1이 아닌 다른 수도 시작하는  테스트 케이스 추가가 필요하다고 생각합니다.

감사합니다.

djm03178   4년 전

left, right는 단순히 거리를 계산하기 위한 범위를 설정할 뿐이므로 꼭 정확히 맞출 필요는 없습니다. 만일 설정한 거리 값이 너무 작다면 cnt가 충분히 증가해서 left가 위로 올라갈 것이기 때문에 left가 작아서 문제가 될 일은 없습니다. 마찬가지로 거리 값이 너무 크다면 cnt가 증가하지 못해서 right가 아래로 떨어질 것이기 때문에 역시 문제가 안 됩니다.

두 코드 모두에 문제가 있습니다. 하지만 둘 다 맞았다고 나오는 이유는 첫 번째 집이 항상 1이어서가 아니고 다른 이유로 데이터가 약한 것입니다. 첫 번째 집이 1이 아닌 케이스는 있습니다. https://www.acmicpc.net/source...

먼저 left를 1이라고 한 코드는 tmp가 1로 시작하기 때문에 틀립니다. 그 다음 집과의 거리를 계산하는 데에 tmp가 쓰이는데, 없을 수도 있는 좌표를 시작점으로 놓았으니 틀리는 게 맞습니다. 다만, 첫 번째 집이 1이 아닌 케이스더라도 우연히 이게 문제가 안 될 수도 있었을 뿐입니다.

left를 List[0]라고 한 코드는 최소 거리를 List[0]로 두었기 때문에 틀립니다. 답이 List[0]보다 작아지는 케이스가 나올 수 있습니다.

아래 반례는 두 코드 모두에서 오답을 출력합니다.

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