2257. 그리드에서 보호되지 않은 셀 개수
난이도:중
주제: 어레이, 매트릭스, 시뮬레이션
0 인덱스 m x n 그리드를 나타내는 두 개의 정수 m과 n이 제공됩니다. 또한 Guards[i] = [rowi, coli] 및 wall[j] = [rowj, colj]는 i번째 가드의 위치를 나타내며, j번째 벽입니다.
경비원은 벽이나 다른 경비원이방해하지 않는 한 자신의 위치에서 시작하여 기본 네 방향(동서남북)의 모든 감방을 볼 수 있습니다. 셀을 볼 수 있는 경비원이 적어도 한 명 있으면 셀은 보호됩니다.
보호되지 않은 비어 있는 셀의 수를 반환합니다.
예 1:
예 2:
제약조건:
힌트:
해결책:
적어도 한 명의 경비원이 지키고 있는 셀을 표시해야 합니다. 경비병들은 기본 네 방향(북, 남, 동, 서)을 볼 수 있지만 벽으로 인해 시야가 차단됩니다. 이 프로세스를 시뮬레이션하고 보호되지 않은 셀 수를 계산할 수 있습니다.
그리드 초기화: 그리드를 나타내는 2D 배열을 만듭니다. 반복하면서 벽, 경비원, 보호 구역으로 셀을 표시합니다.
경비 범위 시뮬레이션:
보호되지 않은 셀 계산: 모든 가드를 처리한 후 벽, 가드, 보호되지 않은 셀을 계산합니다.
이 솔루션을 PHP로 구현해 보겠습니다: 2257. 그리드에서 보호되지 않은 셀 개수
설명:
초기화:
- 빈 셀의 경우 그리드가 0으로 초기화됩니다. 벽과 가드에는 고유한 상수가 표시되어 있습니다.
가드 시뮬레이션:
- 각 가드에 대해 네 방향 모두의 움직임을 시뮬레이션하여 벽이나 다른 가드에 부딪힐 때까지 셀을 보호된 것으로 표시합니다.
보호되지 않은 셀 계산:
- 모든 가드를 처리한 후 그리드를 반복하고 여전히 0으로 표시된 셀을 계산합니다.
성능:
따라서 전체 복잡도는 O(m * n)이며, 이는 문제 제약 조건을 고려할 때 효율적입니다.
연락처 링크
이 시리즈가 도움이 되었다면 GitHub에서 저장소에 별표를 표시하거나 즐겨찾는 소셜 네트워크에서 게시물을 공유해 보세요. 여러분의 지원은 저에게 큰 의미가 될 것입니다!
이렇게 더 유용한 콘텐츠를 원하시면 저를 팔로우해주세요.
위 내용은 그리드에서 보호되지 않은 셀 수 계산의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!