> 백엔드 개발 > PHP 튜토리얼 > 통신하는 서버 수 계산

통신하는 서버 수 계산

Linda Hamilton
풀어 주다: 2025-01-24 02:21:09
원래의
288명이 탐색했습니다.

1267. 통신하는 서버 수

난이도:

주제: 배열, 깊이 우선 검색, 너비 우선 검색, 결합 찾기, 행렬, 계산

m * n 정수 행렬 그리드로 표시되는 서버 센터 지도가 제공됩니다. 여기서 1은 해당 셀에 서버가 있음을 의미하고 0은 서버가 없음을 의미합니다. 두 서버가 같은 행에 있거나 같은 열에 있으면 통신한다고 합니다.

다른 서버와 통신하는 서버 수를 반환합니다.

예 1:

통신하는 서버 수 계산

  • 입력: 그리드 = [[1,0],[0,1]]
  • 출력: 0
  • 설명: 어떤 서버도 다른 서버와 통신할 수 없습니다.

예 2:

통신하는 서버 수 계산

  • 입력: 그리드 = [[1,0],[1,1]]
  • 출력: 3
  • 설명: 세 서버 모두 하나 이상의 다른 서버와 통신할 수 있습니다.

예 3:

통신하는 서버 수 계산

  • 입력: 그리드 = [[1,1,0,0],[0,0,1,0],[0,0,1,0],[0,0,0,1] ]
  • 출력: 4
  • 설명: 첫 번째 행의 두 서버는 서로 통신할 수 있습니다. 세 번째 열의 두 서버는 서로 통신할 수 있습니다. 오른쪽 하단의 서버는 다른 서버와 통신이 불가능합니다.

제약조건:

  • m == 그리드.길이
  • n == 그리드[i].길이
  • 1
  • 1
  • 그리드[i][j] == 0 또는 1

힌트:

  1. 각 행과 열에 컴퓨터 수를 저장합니다.
  2. 격리되지 않은 모든 서버를 계산합니다.

해결책:

다음 단계를 따르세요.

접근하다:

  1. 각 행과 열의 서버 수:

    • 그리드를 탐색하여 각 행과 열에 존재하는 서버 수를 계산합니다. 이는 두 개의 배열 rowCount 및 colCount를 사용하여 수행할 수 있습니다. 여기서:
      • rowCount[i]는 i행의 서버 수를 저장합니다.
      • colCount[j]는 j열에 서버 수를 저장합니다.
  2. 통신 확인:

    • 그리드의 각 서버에 대해 rowCount 및 colCount를 확인하여 다른 서버와 통신할 수 있는지 확인하세요. 둘 중 하나가 1보다 크면 서버는 다른 서버와 통신할 수 있습니다.
  3. 통신하는 서버 수 계산:

    • 그리드를 다시 탐색하고 각 서버(값이 1인 셀)에 대해 두 개 이상의 서버가 있는 행이나 열에 속하는지 확인합니다.

PHP에서 이 솔루션을 구현해 보겠습니다: 1267. 통신하는 서버 수

<?php /**
 * @param Integer[][] $grid
 * @return Integer
 */
function countServers($grid) {
    ...
    ...
    ...
    /**
     * go to ./solution.php
     */
}

// Test the function with the provided examples
$grid1 = [[1, 0], [0, 1]];
$grid2 = [[1, 0], [1, 1]];
$grid3 = [[1, 1, 0, 0], [0, 0, 1, 0], [0, 0, 1, 0], [0, 0, 0, 1]];

echo countServers($grid1) . "\n"; // Output: 0
echo countServers($grid2) . "\n"; // Output: 3
echo countServers($grid3) . "\n"; // Output: 4
?>
로그인 후 복사

설명:

  1. 행과 열로 서버 수 계산:

    • 그리드를 반복하여 각 행과 열에 서버 수(예: 1대)가 있는지 계산합니다. 이 개수를 rowCount 및 colCount 배열에 저장합니다.
  2. 통신 서버 식별:

    • 계산 후 각 서버(값이 1인 셀)를 반복합니다. 행의 서버 수(rowCount[i] > 1) 또는 열의 서버 수(colCount[j] > 1)가 1보다 큰 경우 서버는 다른 서버와 통신할 수 있습니다. 그런 다음 결과를 증가시킵니다. 각 통신 서버의 카운터입니다.
  3. 출력:

    • 다른 서버와 통신할 수 있는 서버의 총 개수를 반환하는 함수입니다.

시간 복잡도:

  • O(m * n), 여기서 m은 행 수이고 n은 열 수입니다. 이는 그리드를 두 번 반복하기 때문입니다. 한 번은 행과 열로 서버 수를 계산하고, 한 번은 통신을 확인합니다.

이 솔루션은 주어진 제약 내에서 문제를 효율적으로 처리합니다.

연락처 링크

이 시리즈가 도움이 되었다면 GitHub에서 저장소에 별표를 표시하거나 즐겨찾는 소셜 네트워크에서 게시물을 공유해 보세요. 여러분의 지원은 저에게 큰 의미가 될 것입니다!

이렇게 더 유용한 콘텐츠를 원하시면 저를 팔로우해주세요.

  • 링크드인
  • 깃허브

위 내용은 통신하는 서버 수 계산의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿