반응형
1. 문제
- 2차원 배열이 주어질 때, 행은 방의 개수, 열은 해당 방에서 가지고 있는 열쇠의 수.
- 0번 방은 무조건 열려있고, 각 방에서 찾은 key로 모든 방을 방문할 수 있는 지 여부를 반환하라.
2. 해결
function DFS(rooms: number[][], room: number, visit: boolean[]) {
if (visit[room]) return false;
visit[room] = true;
const findKey = rooms[room];
for(const key of findKey) {
DFS(rooms, key, visit)
}
}
function canVisitAllRooms(rooms: number[][]): boolean {
const visit = new Array(rooms.length).fill(false);
DFS(rooms, 0, visit);
return !visit.includes(false)
}
- 방에서 찾는 KEY를 통해 DFS 탐색하면 Visit 배열이 완성된다. 해당 배열이 false를 가지고 있는 지 확인하여 반환.