Giả sử lưới N x N, đặt khối 1x1x1 trục x,y,z. Giá trị v = grid[i][j] là tháp v khối trên ô (i,j). Ta xem chiếu các khối lên mặt phẳng xy, yz, zx. Ta nhìn từ trên (top), trước (front), bên (side). Tìm tổng diện tích ba chiếu.
Ví dụ [[1,2],[3,4]] cho kết quả 17.

Giải quyết:
- 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
Xem triển khai:
Ví dụ
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]])) Đầu vào
[[1,2],[3,4]]
Đầu ra
17