মান লেই একটি N x N গ্রিড আছে, সেখানে কিছু 1 x 1 x 1 কিউব রয়েছে যা x, y, এবং z অক্ষের সাথে অ্যালাইন করা। এখানে প্রতিটি ভ্যালু v = grid[i][j] দেখাচ্ছে grid cell (i, j)-র ওপর রাখা v টি কিউবের টাওয়ার। আমরা এই কিউবগুলোর xy, yz, এবং zx প্লেনে প্রজেকশন দেখি। এখানে, আমরা টপ ভিউ, ফ্রন্ট ভিউ, এবং সাইড ভিউ থেকে প্রজেকশন দেখছি। আমাদের তিনটি প্রজেকশনের টোটাল এরিয়া বের করতে হবে।
সেজন্য, যদি ইনপুট হয় [[1,2],[3,4]]

তবে আউটপুট হবে ১৭।
এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব −
- xy := 0, yz := 0, xz := 0
- প্রতিটি row index r এবং row grid-এ,
- yz := yz + row-এর ম্যাক্সিমাম
- প্রতিটি column index c এবং column col row-এ,
- যদি grid[r][c] > 0 হয়, তবে
- xy := xy + 1
- যদি grid[r][c] > 0 হয়, তবে
- প্রতিটি col grid-এ,
- 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