(MEDIUM) https://leetcode.com/problems/keys-and-rooms/
is_visited 라는 변수를 통해 체크해주었다.visited_left 변수를 만들어, 해당 변수가 0일 때 True, 아닐 때 False를 출력하도록 작성해주었다. from collections import deque
class Solution:
def canVisitAllRooms(self, rooms: List[List[int]]) -> bool:
N = len(rooms)
is_visited = [False] * N
is_visited[0] = True #0번 방은 곧 들릴 예정
visited_left = N - 1 #0번 방 제외 다른 방들은 들리지 않음
q = deque([0]) #0번 방을 가장 처음으로 들릴 queue 제작
#들릴 방이 남아 있을 때까지 반복, 이미 모든 방 방문했으면 break
while len(q) and visited_left:
now = q.popleft()
#현재 방에서 들릴 수 있는 다음 방들에 대해 is_visited 체크
for key in rooms[now]:
if not is_visited[key]:
is_visited[key] = True
visited_left -= 1
q.append(key)
return False if visited_left else True
