2D 어레이 - DS 코드 문제 해결

6 x 6 배열이 주어지면 arr:

1 1 1 0 0 0
0 1 0 0 0 0
1 1 1 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0


A의 모래시계를 arr의 그래픽 표현에서 이 패턴에 속하는 인덱스를 가진 값의 하위 집합으로 정의합니다.

a b c
  d
e f g


arr에는 16개의 모래시계가 있으며, 모래시계 합은 모래시계 값의 합입니다. 모든 모래시계의 모래시계 합을 arr 단위로 계산한 다음 최대 모래시계 합을 출력하십시오.

예를 들어, 주어진 2D 배열:

-9 -9 -9  1 1 1 
 0 -9  0  4 3 2
-9 -9 -9  1 2 3
 0  0  8  6 6 0
 0  0  0 -2 0 0
 0  0  1  2 4 0


다음 16개의 모래시계 값을 계산합니다.

-63, -34, -9, 12, 
-10, 0, 28, 23, 
-27, -11, -2, 10, 
9, 17, 25, 18


가장 높은 모래 시계 값은 모래 시계에서 28입니다.

0 4 3
  1
8 6 6


기능 설명
아래 편집기에서 hourglassSum 함수를 완성하세요. 배열의 최대 모래시계 합계인 정수를 반환해야 합니다.

hourglassSum에는 다음 매개변수가 있습니다.
  • arr: 정수 배열

  • 입력 형식
    입력 arr[i]의 6줄 각각은 공백으로 구분된 6개의 정수 arr[i][j]를 포함합니다.

    제약
    -9 <= arr[i][j] <= 9
    0 <= 나, j <= 5

    출력 형식
    int arr에서 발견된 가장 큰(최대) 모래시계 합입니다.

    해결책




    function hourglassSum($arr)
    {
        $sum = -72;
        $sum_arr = array();
        for ($line = 0; $line < 4; $line++) {
            for ($col = 0; $col < 4; $col++) {
                $top = $arr[$line][$col] + $arr[$line][$col + 1] + $arr[$line][$col + 2];
                $middle = $arr[$line + 1][$col + 1];
                $bottom = $arr[$line + 2][$col] + $arr[$line + 2][$col + 1] + $arr[$line + 2][$col + 2];   
                if (($top + $middle + $bottom) > $sum) {
                    $sum = $top + $middle + $bottom;
                }
            }
        }
        return $sum;
    }
    

    좋은 웹페이지 즐겨찾기