suno   3년 전

안녕하세요.

이 문제를 backtraking search로 풀었습니다.

그런데 효율을 위해서 점수 차이<0일 때는 탐색하지 않도록 했는데요.

n = 4이면, 팀1 팀2가 1,2 / 3,4 인 것과 3,4 / 1,2인 것이 같은 상황이라, 점수차가 양수 혹은 0인 한쪽만 탐색하면 된다고 생각했습니다.

그래서  if (diff < 0) return INF;를 넣었는데요. 이것을 넣은 버전(https://www.acmicpc.net/source...)은 59%에서 '틀렸습니다'가 뜨고 넣지 않은 버전(https://www.acmicpc.net/source...)은  '맞았습니다!!'가 뜹니다.

이렇게 가지치기하면 안 되는 이유가 있을까요? diff = 0인 경우도 탐색하니 문제가 없다고 생각했는데 왜 틀리는지 모르겠습니다.

저 혼자 생각해봐도 도저히 이유를 알 수 없어 도움을 청합니다.

djm03178   3년 전

인덱스를 전체적으로 0~n-1로 사용하셨는데 findMinDiff 함수에서만 1~n으로 사용하신 것 같습니다. 그래서 최적이 되는 답이면서 diff가 음이 아닌 정수로 유지되게 하려면 0번을 뽑아야 하는 경우에 틀리게 됩니다. 시작을 0번부터 하고, 53번째 줄도 i < n으로 돌리면 맞습니다.

suno   3년 전

정말이네요. 감사합니다!!!

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