이 코드 골프 퍼즐에서 영감을 얻은 것은 Bridge and Torch 문제 인데, 이는 다리가 시작될 때 d 명의 사람들이 모두 최소한의 시간 안에 교차해야하는 문제입니다.
잡는 것은 최대 두 사람이 한 번에 교차 할 수 있다는 것입니다. 그렇지 않으면 다리가 무게로 부서 질 것이며 그룹은 다리를 건너기 위해 운반해야하는 하나의 토치에만 접근 할 수 있습니다.
전체 퍼즐의 각 사람은 다리를 건너는 데 걸리는 지정된 시간이 있습니다. 두 사람이 함께 교차하면 가장 느린 사람만큼 느리게 진행됩니다.
다리를 건너야하는 정해진 인원은 없습니다. 귀하의 솔루션은 d의 모든 값에 대해 작동해야합니다 .
이 문제에 표준 입력을 사용할 필요는 없지만 문제를 설명하기 위해 설명에 다음 입력 및 출력 형식을 사용합니다. 첫 번째 숫자 d 는 브리지 시작시의 인원 수입니다. 그런 다음 코드는 각각 사람의 속도를 나타내는 d 숫자 를 검색합니다 .
코드 출력은 브리지 시작에서 브리지 끝까지 모든 사람을 교차하는 데 필요한 최소 시간이되며 앞에서 설명한 기준을 충족합니다.
다음은 일부 입력 사례 및 출력 사례와 첫 번째 입력 사례에 대한 설명입니다. 이 정보에서 알고리즘을 도출하여 가능한 가장 적은 바이트의 코드로 문제를 해결하는 것은 사용자의 책임입니다.
입력
4
1 2 5 8
산출
15
이 결과에 도달하려면 사람들은 다음과 같은 방식으로 교차해야합니다.
A and B cross forward (2 minutes)
A returns (1 minute)
C and D cross forward (8 minutes)
B returns (2 minutes)
A and B cross forward (2 minutes)
다음은 진행 과정을 안내하는 또 다른 테스트 사례입니다.
입력
5
3 1 6 8 12
산출
29
규칙 :
- 입력이 정렬되지 않는다고 가정하고 직접해야합니다 (필요한 경우).
- 퍼즐에있는 사람의 수는 4로 고정되어 있지 않습니다 (N> = 1).
- 모든 그룹과 개별 건널목에는 토치가 있어야합니다. 토치가 하나만 있습니다.
- 각 그룹은 최대 2 명으로 구성되어야합니다!
- 아닙니다. 다리에서 뛰어 내려 반대편으로 헤엄 칠 수 없습니다. 이와 같은 다른 트릭은 없습니다.).
1 4 5 6 7비슷한 문제가 있습니다. 25 대 26
N >= 2사람들 만 처리한다는 것을 알았습니다 (이상하게도 "1 명이 넘어야 함"의 사소한 경우를 처리하는 것이 추가 작업이라는 것을 알았 으므로이 점에 대한 명확한 설명이 좋을 것입니다. 미리 감사드립니다.
1 3 4 514하지 (15) 반환해야하는