সমস্যা বিবরণ
একটি N x M ম্যাট্রিক্স A দেওয়া আছে যা একটি ৩D ফিগার উপস্থাপন করে। পয়েন্ট (i, j)-এ বিল্ডিংয়ের উচ্চতা A[i][j]। এই ফিগারটির সারফেস এরিয়া বের করতে হবে।
উদাহরণস্বরূপ, N=3, M=3, A=[[1,4,5],[3,3,4],[1,3,5]] হলে আউটপুট হবে 72।
সমাধানের ধাপসমূহ
res := 0।- প্রতিটি সেল
(i, j)এর জন্য:up_side = A[i-1][j]যদিi>0, অন্যথায় ০।left_side = A[i][j-1]যদিj>0, অন্যথায় ০।res += abs(A[i][j] - up_side) + abs(A[i][j] - left_side)।- যদি
i == N-1হয়,res += A[i][j]। - যদি
j == M-1হয়,res += A[i][j]।
res += N * M * 2(উপর ও নিচের সারফেস)।resরিটার্ন করুন।
পাইথন কোড উদাহরণ
M = 3
N = 3
def get_surface_area(array):
res = 0
for i in range(N):
for j in range(M):
up_side = 0
left_side = 0
if i > 0:
up_side = array[i-1][j]
if j > 0:
left_side = array[i][j-1]
res += abs(array[i][j] - up_side) + abs(array[i][j] - left_side)
if i == N - 1:
res += array[i][j]
if j == M - 1:
res += array[i][j]
res += N * M * 2
return res
array = [[1, 4, 5], [3, 3, 4], [1, 3, 5]]
print(get_surface_area(array)) # আউটপুট: 72
ইনপুট
[[1, 4, 5], [3, 3, 4], [1, 3, 5]]
আউটপুট
72