CodingTest/LeetCode

[LeetCode] 841. Keys and Rooms, Medium

뜸부깅 2025. 4. 3. 16:37
반응형

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를 가지고 있는 지 확인하여 반환.