from itertools import permutations
def solution(n, weak, dist):
answer = 10000000
dist.sort(reverse=True)
weak.sort()
friendsNum = len(dist)
weakLen = len(weak)
for i in range(weakLen):
weak.append(weak[i]+n)
friendPerm = list(permutations(dist, friendsNum))
isFailed = True
for i in range(weakLen):
currentWeak = weak[i:i+weakLen]
for friendComb in friendPerm:
curWeakIdx = 0
curFriendIdx = 0
while curFriendIdx != friendsNum and curWeakIdx != weakLen:
untilThisPoint = currentWeak[curWeakIdx] + friendComb[curFriendIdx]
while curWeakIdx != weakLen and untilThisPoint >= currentWeak[curWeakIdx]:
curWeakIdx+=1
curFriendIdx+=1
if curWeakIdx == weakLen :
isFailed = False
answer = curFriendIdx if curFriendIdx < answer else answer
return answer if not isFailed else -1
자료가 원형인 경우에는 길게 늘이면 답이 보인다.
3 4 13 23 24 자꾸 틀려서 한시간 쏟아부었는데 알고보니 불가능한 경우 -1 리턴하는걸 전혀 안해주고 있어서 그랬다.....
만약 한번이라도 가능한게 있다면 그것을 answer로 내주고 모든 조합에서 불가능하다면 -1을 리턴하도록 해야한다.
안그러면 이번엔 5 6 22 번 등이 틀린다ㅋㅋㅋㅋ
'컴퓨터 > 코테' 카테고리의 다른 글
백준 1987 알파벳 - bfs (0) | 2021.09.12 |
---|---|
블록이동하기(드론 조종) - bfs (0) | 2021.09.10 |
백준 2533 SNS (0) | 2021.09.10 |
카카오 매출하락 최소화 - 트리 dp (0) | 2021.09.10 |
백준 5569, 11726 - 출근 경로, 2xn 타일링 [dp] (0) | 2021.09.08 |