jh05013   5년 전

이 문제는 3-SAT에서 다항 시간 환원이 가능한 NP-하드 문제인 데다가, 답을 기하급수적으로 키울 수 있습니다. (답의 상한은 doju님이 지적하셨습니다.)

280015ee-ce25-4683-8dff-e52daba170f2

NP-하드라는 점은 간단하게 해결할 수 있습니다. 원래는 NP-하드가 아닌데 조건이 하나 빠진 것이기 때문입니다.

  1. 4번 특징의 끝에 "처음 나오는 1의 위치는 모두 다르다."를 추가해 주세요.
  2. 입력 설명의 "빈칸을 사이에 두고 주어진다." 뒤에 "단위 이동은 처음 나오는 1의 위치가 증가하는 순서대로 주어진다."를 추가해 주세요.

위 조건은 모두 assert문으로 확인하였습니다.

하지만 풀이를 수정하지 않으면서 답의 상한 조건을 해결할 방법은 찾지 못했고, 아마 없을 것이라고 생각됩니다. 현재 "도달 가능한 입력"의 답이 int 범위에 있음은 assert문으로 확인하였으나, 그렇게 조건을 걸어도 "도달 불가능한 입력"에서는 아무것도 보장할 수 없습니다.

doju   5년 전

답의 상한을 저격하는 데이터입니다.

Input(Python 3): GitHub Gist
Output: GitHub Gist

이동 횟수에 제한을 걸어서(ex. 여신들은 최대 20억 번 움직일 수 있다) 답이 너무 커지면 불가능하다고 판단하도록 하면 데이터 수정 없이 문제를 살릴 수는 있습니다. 이 조건을 추가한다면 위의 데이터의 첫 번째 테스트 케이스의 답을 0으로 하고 채점 데이터로 추가해 주세요.

startlink   5년 전

재채점했습니다.

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