티스토리 뷰
📌문제
https://school.programmers.co.kr/learn/courses/30/lessons/60062
📌풀이
원형으로 나열된 데이터를 처리하는 경우에는 문제 풀이 간단히 하기 위해 길이를 2배로 늘려서 원형을 일자 형태로 만듦
📌코드
def solution(n, weak, dist):
#길이를 2배로 늘려서 원형을 일자 형태로 변형
length=len(weak)
for i in range(length):
weak.append(n+weak[i])
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):
return -1
return answer
📌참고