from collections import deque
def solution(n, weak, dist):
dist.sort(reverse=True)
q = deque([weak])
visited = set()
visited.add(tuple(weak))
for i in range(len(dist)):
d = dist[i]
for _ in range(len(q)):
current = q.popleft()
for p in current:
l = p
r = (p + d) % n
if l < r:
temp = tuple(filter(lambda x: x < l or x > r, current))
else:
temp = tuple(filter(lambda x: x < l and x > r, current))
if len(temp) == 0:
return (i + 1)
elif temp not in visited:
visited.add(temp)
q.append(list(temp))
return -1
set 에 list나 set을 추가할 수 없다는 게 아쉬웠는데 tuple()로 바꿔주면 set 을 쓸 수 있었다!
굳이 새로운 리스트를 만든 후 v = new
로 재할당할 필요 없이 len(v)
만큼 popleft 해주는 방법도 있었다. 신기