p. 335
from itertools import permutations
def solution(n, weak, dist):
length = len(weak)
for i in range(length):
weak.append(weak[i] + n)
answer = len(dist) + 1
# 0부터 length-1까지를 시작점으로 설정
for start in range(length):
# 친구를 나열하는 모든 경우의 수 각각에 대해서 확인
for friends in list(permutations(dist, len(dist))):
count = 1 # 투입할 친구의 수
# 해당 친구가 점검할 수 있는 마지막 위치
position = weak[start] + friends[count - 1]
# 시작점부터 모든 취약 지점을 확인
for index in range(start, start + length):
# 점검할 수 있는 위치를 벗어나는 경우
if position < weak[index]:
count += 1
if count > len(dist):
break
position = weak[index] + friends[count - 1]
answer = min(answer, count)
if answer > len(dist):
answer = -1
return answer
댓글