[Programmers] 외벽점검*****
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 해주는 방법도 있었다. 신기
Author And Source
이 문제에 관하여([Programmers] 외벽점검*****), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jujube0/Programmers-외벽점검저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)