मान लीजिए N x N ग्रिड है, हम इसमें कुछ 1 x 1 x 1 क्यूब रखते हैं जो x, y, और z के साथ अक्ष-संरेखित हैं। यहां प्रत्येक मान v = grid[i][j] ग्रिड सेल (i, j) के ऊपर रखे v क्यूब के टावर को दर्शाता है। हम इन क्यूब्स के xy, yz, और zx तल पर प्रक्षेपण देखते हैं। यहां, हम क्यूब्स को ऊपर से, सामने से, और साइड व्यू से देखते समय प्रक्षेपण देख रहे हैं। हमें सभी तीन प्रक्षेपणों का कुल क्षेत्रफल ढूंढना है।
तो, यदि इनपुट [[1,2],[3,4]] है

तो आउटपुट 17 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- xy := 0, yz := 0, xz := 0
- ग्रिड में प्रत्येक row इंडेक्स r और row के लिए, करें
- yz := yz + row का अधिकतम
- row में प्रत्येक कॉलम इंडेक्स c और कॉलम col के लिए, करें
- यदि grid[r][c] > 0 शून्येतर है, तो
- xy := xy + 1
- यदि grid[r][c] > 0 शून्येतर है, तो
- ग्रिड में प्रत्येक col के लिए, करें
- xz := xz + col का अधिकतम
- xy + yz + xz लौटाएं
बेहतर समझ के लिए निम्न कार्यान्वयन देखें -
उदाहरण
class Solution(object):
def projectionArea(self, grid):
xy = 0
yz = 0
xz = 0
for r, row in enumerate(grid):
yz += max(row)
for c, col in enumerate(row):
if grid[r][c] > 0:
xy += 1
for col in zip(*grid):
xz += max(col)
return xy + yz + xz
ob = Solution()
print(ob.projectionArea([[1, 2], [3, 4]]))
इनपुट
[[1,2],[3,4]]
आउटपुट
17