모래시계 문제
2542 단어 hackerrankbeginnersjava
문제는 주어진 2d 정수 배열에서 모든 모래시계 모양의 숫자 합계의 최대값을 찾는 것입니다.
6 x 6 배열(2d)이 제공됩니다.
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
그리고 아시다시피 모래시계 모양의 숫자가 있습니다.
첫 번째는 아래에 있습니다.
1 1 1
1
1 1 1
이 모래시계의 합은 (1 + 1 + 1) + (1) + (1 + 1 + 1) = 7
7이 가장 큽니다.
이제 문제입니다. 아래의 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
모래시계처럼 보이는 숫자의 최대 합을 찾아야 합니다.
여기에서 나는 모래 시계 모양의 숫자에 동그라미를 쳤습니다.
빨간색 모래시계의 합은
(-9 + -9 + -9) + (-9) + (-9 + -9 + -9) = -63
나머지 모래 시계 합계는 다음과 같습니다.
-63, -34, -9, 12,
-10, 0, 28, 23,
-27, -11, -2, 10,
9, 17, 25, 18
최대 모래시계는 다음과 같습니다. 합은 28이다.
그렇다면 모래시계처럼 보이는 숫자의 최대값은 어떻게 계산할까요?
다음 단계를 따라야 합니다.
첫 번째 행 첫 번째 열부터 시작하여 인덱스(0, 0)입니다. 아래 모래시계가 들어 있습니다.
-9 -9 -9
-9
-9 -9 -9
따라서 다른 중첩 루프를 사용하여 이 모래시계의 합을 찾아야 합니다.
그런 다음 두 번째 모래시계는 (0, 1)의 인덱스에 있습니다. 아래 모래시계가 들어 있습니다.
-9 -9 1
-9 0 4
-9 -9 1
합계는 이 두 번째 항목에서도 계산됩니다.
두 번째가 첫 번째보다 높으면 최대값을 두 번째 합계로 할당할 수 있습니다. 이것은 끝날 때까지 반복됩니다.
그러나 (0, 4) 인덱스와 그 이후의 인덱스에서 모래시계 모양의 숫자를 만들 수 없기 때문에 마지막 요소까지 갈 필요가 없습니다.
또한 행 방향의 경우 모래시계가 이후에 형성되지 않기 때문에 (4, 0) 인덱스로 이동하는 것은 유효하지 않습니다.
아래 링크를 사용하여 소스 코드 찾기
https://github.com/lizardkingLK/hourglass_problem
Reference
이 문제에 관하여(모래시계 문제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lizardkinglk/hourglass-problem-e9a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)